疑惑:equals()的问题
在thinking in java 3中的一个关于equals()的问题下面是程序
class EqualsTest1
{
int i;
public static void main(String[] args)
{
Integer n1 = new Integer(15);
Integer n2 = new Integer(15);
EqualsTest1 e1 = new EqualsTest1();
EqualsTest1 e2 = new EqualsTest1();
e1.i = e2.i = 10;
System.out.println( "n1.equals(n2) : " + n1.equals(n2));
System.out.println( "e1.equals(e2) : " + e1.equals(e2));
}
}
最后的值是:n1.equals(n2) :true
e1.equals(e2) :false
不是说equals()是比较两个对象的实际内容嘛?为什么会有这样的结果?
------解决方案--------------------> > > 不是说equals()是比较两个对象的实际内容嘛?
怎么说呢?还是仔细看看Object.equals()的文档吧。实际内容的比较方式是需要子类实现的,不是免费的午餐。
------解决方案--------------------可以 重载 equals方法。。来比较
------解决方案--------------------e1.equals(e2)
我倒....e1 ,e2是类的自定义类的实例耶....
类的属性又不是其内容...
楼主的概念完全混淆了
你查一下api..equals()方法是比较两个对象地址指向的内容是否相等
------解决方案--------------------如果你要达到你的目的的话...
你应该重写equals()方法来比较e1 e2
------解决方案--------------------你没有好好看书哦 think in java里已经说到了这一点 要重写equals方法