ホームページ >Java >&#&チュートリアル >JavaのObjectクラスのequals()関数を使用して2つのオブジェクトが等しいかどうかを比較する方法

JavaのObjectクラスのequals()関数を使用して2つのオブジェクトが等しいかどうかを比較する方法

PHPz
PHPzオリジナル
2023-07-24 20:00:171869ブラウズ

Java で Object クラスの equals() 関数を使用して 2 つのオブジェクトが等しいかどうかを比較する方法

Java では、equals() 関数は 2 つのオブジェクトが等しいかどうかを比較するために使用されるメソッドです。すべての Java クラスは Object クラスを継承するため、equals() 関数を使用してすべてのオブジェクトを比較できます。ただし、2 つのオブジェクトが等しいかどうかを正しく比較するには、カスタム クラスの equals() メソッドをオーバーライドする必要があります。

Object クラスのquals() メソッドのデフォルトの実装では、比較に参照の等価性が使用されます。つまり、equals() メソッドは、2 つのオブジェクトが同じメモリ アドレスを参照している場合にのみ true を返します。これは、ほとんどの場合、望ましい動作ではありません。通常、2 つのオブジェクトの内容が等しいかどうかを比較する必要があります。

この目標を達成するには、カスタム クラスの equals() メソッドをオーバーライドする必要があります。 equals() メソッドをオーバーライドするときは、次の点に注意する必要があります。

  1. まず、受信オブジェクトが null かどうかを確認する必要があります。渡されたオブジェクトが null の場合は、直接 false が返されます。
  2. 2 番目に、受信オブジェクトが現在のクラスのインスタンスであるかどうかを確認する必要があります。同じクラスのインスタンスでない場合は、直接 false を返します。
  3. 最後に、必要に応じて 2 つのオブジェクトのプロパティが等しいかどうかを比較できます。比較方法は実際の状況に応じて異なります。

以下は簡単な例です。パーソン クラスを使用して、equals() メソッドをオーバーライドする方法を示します。

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        // 检查传入的对象是否为null
        if (obj == null) {
            return false;
        }
        
        // 检查传入的对象是否是Person类的实例
        if (!(obj instanceof Person)) {
            return false;
        }
        
        // 比较两个对象的属性是否相等
        Person other = (Person) obj;
        return this.name.equals(other.name) && this.age == other.age;
    }
}

上の例では、パーソン クラスの等しいをオーバーライドします。 () 方法。まず、受信オブジェクトが null かどうかを確認し、null であれば直接 false を返します。次に、instanceof 演算子を使用して、受信オブジェクトが Person クラスのインスタンスであるかどうかを確認し、そうでない場合は直接 false を返します。最後に、2 つのオブジェクトの name プロパティと age プロパティを比較して等しいかどうかを確認し、等しい場合は true を返し、等しくない場合は false を返します。

次に、equals() メソッドを使用して、2 つの Person オブジェクトが等しいかどうかを比較できます。

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Bob", 30);
        Person person3 = new Person("Alice", 25);

        System.out.println(person1.equals(person2)); // false
        System.out.println(person1.equals(person3)); // true
    }
}

上の例では、3 つの Person オブジェクトを作成しました。 equals() メソッドを呼び出して person1 と person2 を比較すると、名前と年齢の属性が等しくないため、結果は false になります。 equals() メソッドを呼び出して person1 と person3 を比較すると、名前と年齢の属性が等しいため、結果は true になります。

上記の例を通じて、Object クラスの equals() メソッドを使用して 2 つのオブジェクトが等しいかどうかを比較する方法を確認できます。 equals() メソッドをオーバーライドする場合、実際のニーズを満たすために、オブジェクトがプロパティに基づいて等しいかどうかを判断できます。

以上がJavaのObjectクラスのequals()関数を使用して2つのオブジェクトが等しいかどうかを比較する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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