首頁 >Java >java教程 >.equals() 與 ==:何時在 Java 中使用 Which 進行物件比較?

.equals() 與 ==:何時在 Java 中使用 Which 進行物件比較?

DDD
DDD原創
2024-12-28 00:44:11715瀏覽

.equals() vs ==: When to Use Which for Object Comparison in Java?

使用.equals() 和== 比較物件相等性

在物件導向程式設計中,比較物件對於確定它們的相等性至關重要關於他們的狀態和行為。本文探討了使用 .equals() 方法和 == 運算子來比較兩個物件。

== 運算子:參考相等

== 運算子比較物件引用,指示兩個物件是否指向相同記憶體位置(即,它們是同一物件) 。這稱為引用相等。在您的範例中,object1 和 object2 是 MyClass 的兩個不同實例,因此即使它們具有相同的欄位值(「test」),它們也不是同一個對象,導致 == 運算子的計算錯誤。

.equals() 方法:內容相等

另一方面,.equals() 方法檢查內容相等。它在 MyClass 中被重寫以比較 a 字段的值。如果 object1 和 object2 的 a 值相同,則此比較將傳回 true,表示它們具有相同的內容。

.equals() 的正確實作

中您的程式碼中, .equals() 的實作有邏輯錯誤。它檢查 a 是否等於整個 object2 實例,而不僅僅是它的 a 字段。要比較字串,請修改equals() 方法,如下所示:

public boolean equals(Object object2) {
    return object2 instanceof MyClass && a.equals(((MyClass) object2).a);
}

透過此修改,如果兩個物件都是MyClass 的實例並且它們的a 欄位具有相同的值,則. equals() 將會回傳true。

結論

準確比較物件需要理解引用相等性和內容之間的差異平等。 == 運算子用於引用比較,而 .equals() 方法被重寫以根據特定物件屬性確定內容相等。 .equals() 的正確實作對於確保一致的相等檢查至關重要。請記住,如果您重寫 .equals(),您還應該考慮重寫 hashCode() 以維護相等物件具有相等雜湊碼的契約。

以上是.equals() 與 ==:何時在 Java 中使用 Which 進行物件比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn