ホームページ >Java >&#&チュートリアル >Java でオブジェクトを比較する場合の「==」と「.equals()」の違いは何ですか?

Java でオブジェクトを比較する場合の「==」と「.equals()」の違いは何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 11:19:09282ブラウズ

What's the Difference Between `==` and `.equals()` When Comparing Objects in Java?

== 演算子と .equals() メソッドを使用したオブジェクトの比較

オブジェクト指向プログラミングでは、オブジェクトの比較が重要です。この記事では、== 演算子と .equals() という 2 つの比較メソッドの使用法について説明します。

== Operator

== 演算子は、オブジェクト参照を比較します。同じ内容を持つ同等のオブジェクトだけでなく、2 つのオブジェクトがまったく同じインスタンスであるかどうかをチェックします。提供されているコード例では、object1 と object2 は別個のインスタンスであるため、object1 == object2 は false を返します。

.equals() Method

対照的に、.equals () メソッドは、オブジェクトの内容を比較するために使用されます。通常、オブジェクトが同じプロパティまたは属性を持っているかどうかをチェックします。コード例では、.equals() は object1 の a フィールドが object2 の a フィールドと等しいかどうかをチェックします。ただし、カスタムのequals()実装はフィールドを比較するのではなくオブジェクト自体を比較するため、正しくありません。これにより、a フィールドが同一であっても false が返されます。

.equals() メソッドの正しい実装

a フィールドを正しく比較するには、次を使用できます。次の実装:

public boolean equals(Object object2) {
    if (object2 instanceof MyClass) {
        MyClass other = (MyClass) object2;
        return a.equals(other.a);
    }
    return false;
}

この実装は、object2 が MyClass のインスタンスであるかどうかを確認し、それを適切にキャストします。次に、2 つのオブジェクトの a フィールドを比較します。

結論

== 演算子はオブジェクト参照を比較し、.equals() メソッドはオブジェクトの内容を比較します。両方の方法を適切に使用すると、特定のニーズに合わせて正確に比較できます。

以上がJava でオブジェクトを比較する場合の「==」と「.equals()」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。