为了账号安全,请及时绑定邮箱和手机立即绑定

equals()的问题?

equals()的问题?

Chengl 2016-07-28 18:18:03
Telphone phone=new Telphone();Telphone phone2=new Telphone();System.out.println(phone);System.out.println(phone2);在没有重写equals方法的时候,就如上面代码这样输出对象,结果是不一样的,因为new了两次所以会有两个不同的哈希值,对吧?结果是的。我重构了equals方法后,和上面一样输出结果,发现此时的两个对象的哈希值是一样的,问题来了:哈希值代表对象的地址,为什么重构了equals方法后这两个对象的哈希值就一样了?也就是这两个对象的引用地址就一样了?还没重构的时候,明明是两个对象两个地址的啊,重构就变成一个地址了?为什么呢两台一样的手机,屏幕大小,cup大小,内存大小都一样,重构equals方法后,可以判断出这是两个相同的对象,输出的时候会发现这两个相同的对象的哈希值是一样的,为什么会一样啊?就算是两个相同的对象(数据也相同),也会有各自的地址空间啊,就是两台一样的手机,存放也会有两个地址啊。更何况在代码里面,是首先创建地址空间的。
查看完整描述

2 回答

?
阿旭_

TA贡献217条经验 获得超353个赞

你重构了equals方法里的代码写了什么?

查看完整回答
反对 回复 2016-07-28
  • Chengl
    Chengl
    Eclipse的Source按钮里面的Generate hascode() and equals()... Eclipse自动生成
  • 2 回答
  • 0 关注
  • 1517 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信