ホームページ  >  記事  >  Java  >  Javaで2つのオブジェクトが等しいかどうかを判断する方法

Javaで2つのオブジェクトが等しいかどうかを判断する方法

尚
オリジナル
2019-11-22 11:00:316104ブラウズ

Javaで2つのオブジェクトが等しいかどうかを判断する方法

Java では、equals() メソッドを使用して、2 つのオブジェクトが等しいかどうかを判断できます。equals() メソッドは、文字列と文字列を比較するために使用されます。指定されたオブジェクト。指定されたオブジェクトが文字列と等しい場合は true を返し、それ以外の場合は false を返します。

このメソッドのソース コードは次のとおりです。

public boolean equals(Object obj) {    
          return (this == obj);
    }

すべてのオブジェクトは識別 (メモリ アドレス) とステータス (データ) を持ち、「==」は 2 つのオブジェクトのメモリ アドレスを比較します。つまり、object1.equals(object2)がtrueの場合、equals1とequals2は実際にオブジェクトを参照していることを意味します。同じオブジェクト。

Object の equals() メソッドは、基本的な要件の一部を満たすこともありますが、ほとんどの場合、2 つのオブジェクトを比較することに注意する必要があります。実際、JDK では、String や Math などのカプセル化クラスはすべて、equals() メソッドを書き換えます。

次は String の equals() メソッドです:

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = offset;
        int j = anotherString.offset;
        while (n-- != 0) {
            if (v1[i++] != v2[j++])
            return false;
        }
        return true;
        }
    }
    return false;
    }

このコード セグメントの場合: if (v1[i] != v2[j]) return false; 非常にはっきりとわかります。文字列のequals()メソッドは、参照比較ではなくコンテンツ比較を実行します。他のカプセル化クラスについても同様です。

Java 仕様では、equals() メソッドの使用は次の規則に従う必要があります:

equals メソッドは、null 以外のオブジェクト参照で等価性を実現します。

1. 再帰性: null 以外の参照値 x に対して、x.equals(x) は true を返す必要があります。

2. 対称性: null 以外の参照値 x および y については、y.equals(x) が true を返す場合に限り、x.equals(y) は true を返す必要があります。

3. 推移性: null 以外の参照値 x、y、z について、x.equals(y) が true を返し、y.equals(z) が true を返す場合、x.equals(z ) true を返す必要があります。

4. 一貫性: null 以外の参照値 x および y について、x.equals(y) を複数回呼び出すと、常に true が返されるか、常に false が返されます (等号比較で使用される情報が条件となります)。オブジェクトは改訂されていません。

5. null 以外の参照値 x の場合、x.equals(null) は false を返す必要があります。

上記のルールは、使用中は遵守することが最善です。遵守しないと、予期しないエラーが発生します。

Java で比較する場合、比較の種類に応じて適切な比較方法を選択する必要があります。

1) object フィールドで、equals メソッドを使用します。

2) タイプセーフな列挙。equals または == を使用します。

3) null オブジェクト フィールドの可能性があります: == と等しいを使用します。

4) 配列フィールド: Arrays.equals を使用します。

5) float と double を除くプリミティブ データ型: == を使用します。

6) Float 型: Float.foatToIntBits を使用して int 型に変換し、== を使用します。

7) Double 型: Double.doubleToLongBit を使用して Long 型に変換し、その後 == を使用します。

Java の知識をさらに深めたい場合は、Java の基本チュートリアル を参照してください。

以上がJavaで2つのオブジェクトが等しいかどうかを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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