一千萬個為什麽

搜索

當我們有==運算符時為什麽是equals()方法?


當我看到 equals()方法的實現時,除了 == 之外什麽也沒做。所以我的問題是,當我們有 == 運算符執行相同的工作時,需要將此作為單獨的方法嗎?

最佳答案

您不能重載 == 運算符,但如果您希望它與 == 運算符的行為不同,則可以覆蓋 equals(Object) ,即不比較參考,但實際比較對象(例如使用其全部或部分字段)。

此外,如果您覆蓋 equals(Object),也請查看 hashCode()。這兩個方法需要兼容(即兩個根據 equals(Object)相等的對象需要具有相同的 hashCode()),否則各種奇怪的錯誤將發生(例如,將對象添加到集合或地圖時)。

轉載註明原文: 當我們有==運算符時為什麽是equals()方法?

猜你喜歡