首頁  >  文章  >  Java  >  物件比較時 `==` 和 `Equals()` 有什麼不同?

物件比較時 `==` 和 `Equals()` 有什麼不同?

Patricia Arquette
Patricia Arquette原創
2024-11-26 02:14:11240瀏覽

What's the Difference Between `==` and `Equals()` for Object Comparison?

理解 == 和 Equals/equals 之間的區別

在比較程式語言中的物件時,區分引用相等和值相等至關重要。這種差異出現在 == 和 Equals/equals 運算子之間。

與 == 的引用相等

Java 和 C# 中的 == 運算子(除非被重寫)都執行參考平等。它評估兩個物件是否共享相同的記憶體位置。這表示如果物件是同一實例,則 == 將傳回 true;如果物件是不同實例,則傳回 false。

值與 Equals/equals 相等

相反, Equals/equals 方法比較兩個物件的值。 Object 類別中的預設實作檢查引用相等性,但它可以被衍生類別覆寫以實現值相等。這意味著即使物件是不同的實例但具有相同的值,Equals/equals 也可以傳回 true。

主要差異

Feature Reference Equality (==) Value Equality (Equals/equals)
Comparison Memory location Value
Overloading Not supported Supported in C# for some types
Null values Throws an exception if one object is null Treats null as an unequal value
Object class implementation Identity comparison Identity comparison
Potential for overrides No Yes

範例

考慮以下Java code:

String str1 = "Hello";
String str2 = new String("Hello");

System.out.println(str1 == str2); // false (reference equality)
System.out.println(str1.equals(str2)); // true (value equality)

考慮以下Java code:

在此範例中,== 傳回false,因為str1 和str2是不同的實例,即使它們具有相同的值。然而,Equals 傳回 true,因為它比較值。 結論理解引用相等 (==) 和值相等 (Equals/equals) 之間的差異對於Java 和 C# 中的準確物件比較。透過適當地利用這些運算符,您可以確保正確的行為並避免程式碼中出現意外結果。

以上是物件比較時 `==` 和 `Equals()` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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