怎么么有人解释第三个的错误原因啊,
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呀.....
怎么么有人解释第三个的错误原因啊,
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呀.....
怎么么有人解释第三个的错误原因啊,
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我们也可以重写,赋给它新的含 义