==比较的是地址(引用指向),
但是String s1="abc";//在栈存值
String s2=new String("abc");//在堆中存值
所以单纯比较地址肯定是错误的
而equals()方法在String中被重写了,所以即使在地址不一样的情况下,也是可以比较内容,内容一样,也返回true
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
|