String 引用类型与基本类型区别
??String a="A";
??String b="A";
??String c=new String("A");
??System.out.println(a==b);//true
??System.out.println(a==c);//false
?
??我认为String a="A"; 这种形式声明的变量在比较的时候将会隐式调用equals方法,而new出来的要自己手动去调用
? 但是我还不明白,两个对象相互比较的时候是怎么判断的
? 这个是String.equals方法:
public boolean equals(Object anObject) {if (this == anObject) { return true;}if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) {char v1[] = value;char v2[] = anotherString.value;int i = offset;int j = anotherString.offset;while (n-- != 0) { if (v1[i++] != v2[j++])return false;}return true; }}return false; }
?