因为
String的equals()
比较内容,而不是对象本身。
公共布尔等于(Object anObject)
将此字符串与指定对象进行比较。当且仅当参数不为null且该
String对象表示与此对象相同的字符序列时,结果为true 。
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;}
(链接到String.equals()的源)
与
等于Object相等
:
类的equals方法
Object在对象上实现了最有区别的对等关系。也就是说,对于任何非空引用值x和y,当且仅当x和y引用同一对象(x== y具有值true)时,此方法返回true 。
public boolean equals(Object obj) { return (this == obj);}
(链接到Object.equals()的源)
另外,请不要忘记
equals()函数的约定:
equals方法对非null对象引用实现对等关系:
- 这是 自反的 :对于任何非null的参考值
x,x.equals(x)应返回true。- 它是 对称的
:对于任何非空引用值x和y,x.equals(y)当且仅当y.equals(x)返回true时,才应返回true。- 它是 传递
性:对于任何非空的参考值x,y以及z,如果x.equals(y)回报率true和y.equals(z)回报率true,那么x.equals(z)应该返回true。- 它是 一致的
:对于任何非null的引用值x和,只要不修改对象的equals比较中使用的信息y,就可以多次调用x.equals(y)一致返回true或一致返回false。- 对于任何非null的参考值
x,x.equals(null)应返回false。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)