ホームページ >Java >&#&チュートリアル >オブジェクト比較の「==」と「Equals()」の違いは何ですか?
プログラミング言語でオブジェクトを比較する場合、参照の等価性と値の等価性を区別することが重要です。この区別は、== 演算子と Equals/equals 演算子の間に発生します。
==
との参照の等価性 Java と C# の両方の == 演算子は (オーバーライドされない限り) 実行されます。参照の等価性。 2 つのオブジェクトが同じメモリ位置を共有しているかどうかを評価します。これは、オブジェクトが同じインスタンスであれば == は true を返し、異なるインスタンスであれば false を返すことを意味します。
Equals/equals による値の等価性
対照的に、 Equals/equals メソッドは 2 つのオブジェクトの値を比較します。 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)
この例では、str1 と str2 は同じ値であっても異なるインスタンスであるため、== は false を返します。ただし、Equals は値を比較するため true を返します。
結論
参照の等価性 (==) と値の等価性 (Equals/equals) の違いを理解することが不可欠です。 Java と C# での正確なオブジェクト比較。これらの演算子を適切に活用することで、正しい動作を保証し、コード内の予期しない結果を回避できます。
以上がオブジェクト比較の「==」と「Equals()」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。