Met*_*uru 0 java equals object
class Test{
public static void main (String [] args){
Test t1 = new Test();
Test t2 = new Test();
if(!t1.equals(t2))
System.out.println("they're not equal");
}
}
Run Code Online (Sandbox Code Playgroud)
它说会打印字符串......为什么它们不相等?它们是否需要与内存中完全相同的对象才能通过该调用?那么它必须与简单地比较所有对象属性值不同,因为我认为它们是相同的(除非有一些基于时间的属性?).有人在意吗?
如果你没有覆盖equals(..)方法,那么是 - 它们需要是内存中完全相同的对象.那是因为类equals(..)提供的默认实现Object(默认情况下所有类都扩展)使用对象的(排序)内存地址(它使用==实例上的比较)
但是如果你想根据它们的字段使它们相等,那么覆盖equals(..)并提供自定义逻辑.请注意,hashCode(..)在这种情况下您也应该实现.请参阅java.lang.Object#equals(..)文档