“==”

  • 是用來判斷兩個比較物件是不是有相同的 references。
  • 每一個物件都有獨立的 reference,假如 reference 不同就表示它們是不同的物件。

.equals()

  • 是用來比較物件的值(儲存在 heap 上的值)。
  • 可以判斷兩個有不同 references 的物件是否指向相同的值

總結:

  • == 比較的是兩個對象的引用或基本數據類型的值。
  • .equals() 比較的是兩個對象的內容,通常需要被覆寫,並根據自定義的邏輯進行比較。

在使用時,需要注意以下幾點:

  • 對於基本數據類型,應該使用 == 來進行相等性比較。
  • 對於引用類型,如果只是想比較兩個對象是否引用同一個 reference,可以使用 ==。如果需要比較兩個對象的內容的值是否相等,應該使用 .equals() 方法。
  • 在使用 .equals() 方法時,需要注意處理 null 值的情況,以避免 NullPointerException。可以使用 Objects.equals() 方法(Java 7+)或自定義的邏輯來處理 null 值。