先看一段代码:
1 public class StringCom { 2 3 public static void main(String[] args) { 4 String a = "hello"; 5 String b = "hello"; 6 String c = new String("hello"); 7 char d[] = {'h','e','l','l','o'}; 8 9 System.out.println(a==b); //true10 11 System.out.println(a==c); //false12 13 System.out.println(a==d); // Incompatible operand types String and char[]14 15 System.out.println(a.equals(d)); //false , 提示:Unlikely argument type for equals(): char[] seems to be unrelated to String16 17 System.out.println(a.equals(new String("hello"))); //true18 19 }20 21 }
遇到一个问题,就像上面的5个比较,问哪个会输出false,至于第13行的那个,在Eclipse里直接报错 “Incompatible operand types String and char[] ” , 所以意思是,也不会输出false?还没运行就报错了。
还有就是看到一个讨论:
里面有关于 ‘==’和‘equals’的讨论,有些回复看得我懵逼了,推荐一篇博客:
还有知乎的一个回答: