Java オブジェクトの比較はどのように実装されますか?

WBOY
リリース: 2024-04-12 10:09:02
オリジナル
807 人が閲覧しました

Java におけるオブジェクトの比較は参照によって行われ、== 演算子は参照アドレスを比較し、equals() メソッドはオブジェクトの内容を比較します。プリミティブ型の場合、equals() は値を比較しますが、参照型の場合、equals() は通常、文字列の値プロパティの比較など、内容の同等性を比較します。 == を使用すると、2 つの異なるオブジェクトは、同じ内容であっても false を返します。equals() を使用すると、2 つの Person オブジェクトの比較など、異なるオブジェクトの同じ内容は true を返します。

Java オブジェクトの比較はどのように実装されますか?

Java オブジェクトの比較: メカニズムと実践

Java では、オブジェクトは参照によって比較できます。オブジェクト参照は、オブジェクトがメモリ内に格納されているアドレスを表します。 2 つのオブジェクト参照を比較するとき、実際には、それらが参照するオブジェクトが同じかどうかを比較していることになります。

== およびquals() メソッド

Java では、オブジェクトを比較する 2 つの方法が提供されます。

  • == 演算子: オブジェクトへの参照を比較します。 2 つの参照が同じオブジェクトを指している場合は true を返し、それ以外の場合は false を返します。
  • equals() メソッド: オブジェクトの実際の内容を比較します。 2 つのオブジェクトの値が等しい場合は true を返し、それ以外の場合は false を返します。

==

== 演算子の実装は比較的単純で、2 つの参照のアドレスを直接比較します。 2 つの参照は、同じオブジェクトを指している場合、等しいと見なされます。

public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    return false;
}
ログイン後にコピー

equals() の実装

equals() メソッドの実装は、オブジェクトの種類に応じて異なる必要があります。プリミティブ型 (int、double など) の場合、equals() はそれらの値を比較します。参照型 (String、ArrayList など) の場合、equals() は通常、その内容が等しいかどうかを比較します。

次は、2 つの String オブジェクトを比較する例です。

public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj instanceof String) {
        String other = (String) obj;
        return this.value.equals(other.value);
    }
    return false;
}
ログイン後にコピー

実用的なケース

2 つの String オブジェクトを作成するコードがあるとします。人物オブジェクト:

Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);
ログイン後にコピー

== 演算子を使用してこれら 2 つのオブジェクトを比較すると、異なるオブジェクトであるため false が返されます。

System.out.println(p1 == p2); // 输出 false
ログイン後にコピー

ただし、equals() メソッドを使用して比較すると、内容が等しいため true が返されます。

rree

以上がJava オブジェクトの比較はどのように実装されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート