Telphone phone=new Telphone();Telphone phone2=new Telphone();System.out.println(phone);System.out.println(phone2);在沒有重寫equals方法的時候,就如上面代碼這樣輸出對象,結果是不一樣的,因為new了兩次所以會有兩個不同的哈希值,對吧?結果是的。我重構了equals方法后,和上面一樣輸出結果,發(fā)現(xiàn)此時的兩個對象的哈希值是一樣的,問題來了:哈希值代表對象的地址,為什么重構了equals方法后這兩個對象的哈希值就一樣了?也就是這兩個對象的引用地址就一樣了?還沒重構的時候,明明是兩個對象兩個地址的啊,重構就變成一個地址了?為什么呢兩臺一樣的手機,屏幕大小,cup大小,內存大小都一樣,重構equals方法后,可以判斷出這是兩個相同的對象,輸出的時候會發(fā)現(xiàn)這兩個相同的對象的哈希值是一樣的,為什么會一樣?。烤退闶莾蓚€相同的對象(數(shù)據(jù)也相同),也會有各自的地址空間啊,就是兩臺一樣的手機,存放也會有兩個地址啊。更何況在代碼里面,是首先創(chuàng)建地址空間的。
添加回答
舉報
0/150
提交
取消