Re: [問題] 自訂類別繼承Object的問題
: 但是問題來了
: 當我 Ball b1 = new Ball(18.4, "red ball");
: Ball b2 = new Ball(18.4, "red ball");
: 然後 System.out.println(b1 == b2); <-- 這個false我能理解 畢竟兩個不同物件
: System.out.println(b1.equals(b2)); <-- 這個false我就不能理解了
: 它不是比較這兩個物件的內容是否相同嗎?
: 這個問題請教版上先進 感謝
字串的 S1==S2 是看指向的記憶體是否相同
字串的 equals 是判定內容是否相同
這點沒有疑問
物件的 == 和字串一樣是看參考的記憶體是否相同
關於物件的equals方法說明如下:
public boolean equals(Object obj)
比較兩物件是否相等。但唯有在"=="運算子
無法比對兩物件時,才需要覆蓋equals方法
且同時還必須覆蓋hashCode方法
public int hashCode()
傳回物件在hash table的對應位置(hash code)
同物件當然產生相同code,但不同物件可以共享code
意即共同指向相同參考
似乎是,物件的equals也是指參考的相同與否
難到String有特別覆蓋過?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.40.35
※ 編輯: Egriawei 來自: 61.230.40.35 (06/01 19:30)
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章