我可以通过以下方式了解==
和object.equal(Object obj)
之间的差异吗? :
如果两个对象的值相同,那么object.equal(Object obj)
会返回true
。如果两个对象的类型和值相同,则==
会返回true
。
答案 0 :(得分:5)
==
将返回true。
equals(Object)
返回true。这可以是同一个对象,一个等价的对象,也可以是开发人员想写的东西。
默认实现写为
public boolean equals(Object obj) {
return (this == obj);
}
所以你可以看到它做同样的事情。
答案 1 :(得分:2)
java.lang.Object.equals
和==
的默认行为是,如果引用a和b都指向同一个对象,则返回true;否则就是假的。
如果您想比较值,则必须覆盖等于。这是String
以及其他一些类型所做的事情。你不能免费获得它;你必须从java.lang.Object
覆盖方法。
最好阅读Joshua Bloch" Effective Java" chapter 3了解如何正确完成。
答案 2 :(得分:0)
object.equals(Object obj)
返回true
,具体取决于对象的类型以及是否已实现该方法。
==
返回true
。
答案 3 :(得分:0)
Object.equals的实现是:
public class Object {
public boolean equals(Object obj) {
return (this == obj);
}
}
仅当true
与obj
完全相同时,才会返回this
。就像Peter Lawrey在他的回答中所说,equals
对任何其他类的定义完全取决于它是如何编码的。甚至没有要求两个对象是同一个类,甚至是层次相关的类。
请注意,定义equals
而不定义hashcode
通常被视为不良做法。需要两个equal
对象必须返回相同的哈希码。