首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

关于equals比较对象内容的有关问题

2012-08-08 
关于equals比较对象内容的问题。都说equals比较的是对象内容。那么我写一个TestBean类:public TestBean{}然

关于equals比较对象内容的问题。
都说equals比较的是对象内容。那么我写一个TestBean类:
public TestBean{}
然后测试:
public class TestMain {
public static void main(String[] args) {
TestBean t1=new TestBean();
TestBean t2=new TestBean();
System.out.println(t1.equals(t2));
}
}
为什么t1与t2不相等呢?如果说equals方法内部首先是比较hashcode,那我重写掉hashcode:
public class TestBean {
@Override
public int hashCode() {
return 1;
}

}
然后再执行测试类,还是返回false。
求人解答,谢谢!


[解决办法]
楼主搞混了。Object 的equals方法比较的是地址。
所以你的两个TestBean 对象,equals一下当然返回false。
String类的equals方法比较内容,因为里面是重写了equals方法了。默认都是比较的地址。
[解决办法]

探讨

引用:

首先区分equals和==, 对于对象类型的==操作,比较的是两个对象的引用地址;
对于equals方法,若没有重写Object的equals方法, 就会调用Object的equals方法,而Object的equals方法用的是==操作来比较两个对象,也即和t1==t2是一样的;并不是你说的equals方法内部首先是比较hashcode;

t1和t2是两个……

热点排行