ham*_*uki 0 java equality equals
我正在阅读Java中的equals方法,我听到人们说==测试引用相等(它们是否是同一个对象)..equals()价值平等的测试(它们在逻辑上是否"相等").
我相信这是真的,但是,如果你看一下源代码.equals(),它只是顺从了==
从Object类:
public boolean equals(Object obj) {
return (this == obj);
}
Run Code Online (Sandbox Code Playgroud)
现在我很困惑.我看到的是我们正在测试当前对象是否具有与显式参数相同的引用.它是测试引用相等还是值相等?
来自Javadoc:
类的equals方法
Object实现了对象上最具辨别力的等价关系; 即,对于任何非null参考值x和y,该方法返回true当且仅当x和y指代相同的对象(x == y具有值true).
Object作为最终的基类,这是equals它可以提供的唯一定义.没有字段可以跨实例进行比较,因此实例只能等于自身.
你在评论中说过:
我想知道字符串比较我看到人们一直使用它
你的问题Object不是问问题String.String覆盖equals,因为它Object的定义equals不适合String.因此,String定义自己的(与实现所需的语义保持一致equals).
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |