因为String重写equals()方法以后,扩展了这个方法
下面是String类重写object类的equals()方法的代码:
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;
}
哈哈一开始,先是判断String1和String2的地址(==号对基本数据类型来说是比较数据大小,但是对对象来说是比较地址),如果地址相同,说明这俩字符串对象是同一个字符串,返回真;而如果地址不相同,那就先判断是不是String类型,如果是,就转成char型数组,然后判断字符串内容是否相同,相同就返回真,不同就返回假