作者pttnews (PTT新聞)
看板java
標題Re: [問題] 一題SCJP的題目,有關equals()&hashcod()
時間Wed Dec 7 10:45:51 2011
※ 引述《louisyu (louis)》之銘言:
: 我認為當兩個物件比較的時候,
: 當equals() returns true,兩個hashCode不一定會相等
我不是高手,如果我解釋錯誤,請各位指點
如果是
String A = "ABCDE";
String B = A;
這時候 A與B 都是參考同一記憶體位址的物件
所以 兩個物件用 == 比較的時候 回傳 true
而且 兩個hashCode會相等 因為他們是同一個物件
但是
String A = "ABCDE";
String B = "ABCDE" + "";
這時候 A與B 都不是參考同一記憶體位址的物件
所以 兩個物件用 == 比較的時候 回傳 false
而且 兩個hashCode不會相等 因為他們不是同一個物件
如果要比較 A B 內容是否相等
只能靠 equals 來比對。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.175.188
→ gwokae:有趣的是舉的例子竟然是錯的,這個例子hashCode跟equals都 12/08 08:27
→ gwokae:== 都是 true 12/08 08:30
→ adrianshum:錯誤太多... 答的也和原問題扯不上關係 12/08 08:51