一:看第一个例子
输出结果:
false
false
cat1 == cat2 很简单,他们不是同一对象,有不通的存储地址。
但是cat1.equals(cat2)为什么是false呢。因为cat是对象,这里用的是父类的equals方法
而Object类equals方法的实现为:
<strong><span style="font-size:18px;"> public boolean equals(Object obj) {
return (this == obj);
}</span></strong>
二:尝试重写Obejct的equals方法
String s1 = "abc"; String s2 = "abc"; System.out.println(s1.equals(s2));
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;
}
原文:http://blog.csdn.net/u013628152/article/details/43372279