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