日期:2014-05-20  浏览次数:20715 次

疑惑: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方法