等于Object中的实现

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)

现在我很困惑.我看到的是我们正在测试当前对象是否具有与显式参数相同的引用.它是测试引用相等还是值相等?

T.J*_*der 5

来自Javadoc:

类的equals方法Object实现了对象上最具辨别力的等价关系; 即,对于任何非null参考值xy,该方法返回true当且仅当xy指代相同的对象(x == y具有值true).

Object作为最终的基类,这是equals它可以提供的唯一定义.没有字段可以跨实例进行比较,因此实例只能等于自身.


你在评论中说过:

我想知道字符串比较我看到人们一直使用它

你的问题Object不是问问题String.String覆盖equals,因为它Object的定义equals不适合String.因此,String定义自己的(与实现所需的语义保持一致equals).