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;
}