class Test1{
int i;
}
public class Test2{
public static void main(String[] args){
Test1 t1 = new Test1();
Test1 t2 = new Test1();
t1.i = t2.i = 100;
System.out.println(t1.equals(t2));
}
}为什么这个结果是false啊?equals不是直接比较2个值吗?
int i;
}
public class Test2{
public static void main(String[] args){
Test1 t1 = new Test1();
Test1 t2 = new Test1();
t1.i = t2.i = 100;
System.out.println(t1.equals(t2));
}
}为什么这个结果是false啊?equals不是直接比较2个值吗?
楼主【llm0528】截止到2008-07-09 15:33:15的历史汇总数据(不包括此帖):
发帖的总数量:45 发帖的总分数:900 每贴平均分数:20
回帖的总数量:38 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:45 结贴的总分数:900
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
int i;
public boolean equals(Object obj){
if(obj instanceof Test1){
return i==((Test1)obj).i;
}
return false;
}}
equals 和 =
equals 和 ==
都是不一样的.! 老紫竹解释了!!
愿楼主好运吧.!!
return (this == obj);
}它只比较引用是否相等,和 t1 == t2 没什么区别。你可以自己覆盖 equals 方法,来实现真正的相等性测试,如下:public class EqTest { private int i; public boolean equals(Object obj) { //覆盖了超类继承下来的 equals 方法来实现自己真正的相等性测试
if (obj == this) return true; //如果引用都相等那这两个就是同一个对象,当然自己与自己相等
if (obj == null) return false; //如果传进来空引用,那就不必比较了,真实的对象肯定同虚无不相等
if (obj.getClass() != this.getClass()) return false; //如果两个对象不是同类就根本没有可比性,当然不等
EqTest other = (EqTest) obj; //将 obj 强制转换为它实际的类型
return other.i == this.i; //根据两个属于同一个类的不同对象的实例域的值来判断这两个对象是否相等
} public static void main(String[] args) {
EqTest t1 = new EqTest();
EqTest t2 = new EqTest();
t1.i = t2.i = 100;
System.out.println(t1.equals(t2));
}}