猿问

equals()的问题?

Telphone phone=new Telphone();

Telphone phone2=new Telphone();

System.out.println(phone);

System.out.println(phone2);

在没有重写equals方法的时候,就如上面代码这样输出对象,结果是不一样的,因为new了两次所以会有两个不同的哈希值,对吧?结果是的。

我重构了equals方法后,和上面一样输出结果,发现此时的两个对象的哈希值是一样的,问题来了:哈希值代表对象的地址,为什么重构了equals方法后这两个对象的哈希值就一样了?也就是这两个对象的引用地址就一样了?还没重构的时候,明明是两个对象两个地址的啊,重构就变成一个地址了?为什么呢

两台一样的手机,屏幕大小,cup大小,内存大小都一样,重构equals方法后,可以判断出这是两个相同的对象,输出的时候会发现这两个相同的对象的哈希值是一样的,为什么会一样啊?就算是两个相同的对象(数据也相同),也会有各自的地址空间啊,就是两台一样的手机,存放也会有两个地址啊。更何况在代码里面,是首先创建地址空间的。

Chengl
浏览 1518回答 2
2回答

阿旭_

你重构了equals方法里的代码写了什么?
随时随地看视频慕课网APP

相关分类

Java
我要回答