【发布时间】:2014-12-11 07:22:20
【问题描述】:
我写了以下代码:
public class Test{
int a;
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");
if(t1 instanceof Test)
System.out.println("True");
}
}
这是输出:
They're not equal
True
我什至尝试为这两个对象的实例变量'a' 分配相同的值,如下所示,
t1.a = 10;
t2.a = 10;
还是一样的输出。
我可以知道t1.equals(t2) 何时返回True?
equals() 方法如何作用于对象?
【问题讨论】:
-
覆盖Object类默认提供的equals方法
-
你需要重写
equal()和hashCode()(可选)方法来实现这个 -
我想你误解了实例方法,请尝试阅读Java中的对象平等,它会消除你所有的疑惑
-
我的 2 美分:如果你这样做
Test t1 = new Test(); Test t2 = t1;,那么t1.equals(t2)将返回 true。