当前位置: 代码迷 >> Java相关 >> equal,和等号的用法..
  详细解决方案

equal,和等号的用法..

热度:636   发布时间:2007-02-05 00:25:18.0

怎么么有人解释第三个的错误原因啊,
Number n3 = new Number();
Number n4 = new Number();
n3.i = 30;
n4.i = 30;
System.out.println(n3.equals(n4));//(3)false不明白什么意思....
按照你们的理论,equals比较的是数值,n3和n4的数值都是30呀.....


----------------解决方案--------------------------------------------------------
以下是引用jxry8888在2007-2-5 0:25:18的发言:

怎么么有人解释第三个的错误原因啊,
Number n3 = new Number();
Number n4 = new Number();
n3.i = 30;
n4.i = 30;
System.out.println(n3.equals(n4));//(3)false不明白什么意思....
按照你们的理论,equals比较的是数值,n3和n4的数值都是30呀.....

你自己又没有重写equals方法,你这样调用默认是Object给你 实现的,Object怎么知道你的相等 是i相等呢
所以,你得为你的Number类写一个equals方法
public boolean equals(Object other){
if(other instanceof Number){
Number n=(Number)other;
return n.i==this.i;
}else{
return false;
}
}
----------------解决方案--------------------------------------------------------

还有一点你要记住,==如果是比较对象,它永远是比较对象的地址是不是一样,而不会比较它们内部的值是否一样,这一点我们不能重写
但是equals我们也可以重写,赋给它新的含 义


----------------解决方案--------------------------------------------------------
谢谢楼上的,学到知识了!!!
----------------解决方案--------------------------------------------------------
不用谢,大家一起学习
----------------解决方案--------------------------------------------------------

刚才看了张孝祥的教程视频,正好有这个知识点,现在印象更加深刻了...
谢谢楼上的...


----------------解决方案--------------------------------------------------------
  相关解决方案