首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 新手常見問題:equals 方法如何比較對象?

     編輯:程式設計疑難解答

在 Java 中,equals 方法常被初學者誤解。許多人以為它只是比較兩個對象的屬性值(如 name、age),但實際上它的運作機制更為關鍵:當你覆寫 equals 時,this 代表當前調用該方法的對象,而傳入的參數 obj 則是另一個待比較的對象。方法內部需顯式比較兩者的各個屬性,才能正確判斷邏輯上的相等性。

核心概念解析

自定義的 equals 方法通常會先檢查引用是否相同、類型是否一致,再逐一比較關鍵字段。例如:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person other = (Person) obj;
    return this.name.equals(other.name) && this.age == other.age;
}

這樣在比較 p1.equals(p2) 時,this 是 p1,obj 是 p2,雙方屬性值逐一比對,得出真正的相等結果。

常見誤區

  • 未覆寫 hashCode 導致集合類(如 HashMap)行為異常
  • 直接比較引用而非內容
  • 忽略 null 檢查拋出空指針異常

掌握 equals 的正確實現模式,是 Java 進階的基石之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved