ホームページ  >  記事  >  Java  >  Javaのequalメソッドとequalsメソッドの区別

Javaのequalメソッドとequalsメソッドの区別

WBOY
WBOYオリジナル
2024-02-18 14:17:07622ブラウズ

Javaのequalメソッドとequalsメソッドの区別

Java における等しいと等しいの違いには、具体的なコード例が必要です

Java では、2 つのオブジェクトが等しいかどうかを比較する必要があることがよくあります。この場合、通常はJavaのequalメソッドまたはequalsメソッドを使用します。これらは似ていますが、いくつかの重要な違いがあります。この記事では、equalとequalsの違いを紹介し、具体的なコード例を通して説明します。

まず、均等法を見てみましょう。 equal メソッドは Object クラスのメソッドであり、Java のすべてのオブジェクトがこのメソッドを呼び出すことができます。このメソッドは参照比較を使用します。つまり、2 つのオブジェクトが同じ参照を持つかどうかを判断します。 2 つのオブジェクトの参照が同じであれば、それらは等しいと見なされます。以下はサンプル コードです:

String str1 = new String("Hello");
String str2 = new String("Hello");
boolean result = str1.equals(str2);
System.out.println(result); // 输出结果为 true

上記のコードでは、値が「Hello」である 2 つの文字列オブジェクト str1 と str2 を作成しました。ただし、これら 2 つのオブジェクトは new キーワードによって個別に作成されるため、参照は異なります。ただし、String クラスは、equals メソッドをオーバーライドするため、str1.equals(str2) を呼び出すと、2 つの文字列が等しいことを示す true が返されます。

次に、equals メソッドを見てみましょう。 equals メソッドは Object クラスのパブリック メソッドであり、これをオーバーライドして 2 つのオブジェクトの内容を比較できます。デフォルトでは、equals メソッドは引き続き参照比較を使用します。比較ルールをカスタマイズしたい場合は、equals メソッドをオーバーライドする必要があります。以下はサンプル コードです。

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

    // 省略构造函数和其他方法

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }

        Person person = (Person) obj;

        if (age != person.age) {
            return false;
        }
        return name != null ? name.equals(person.name) : person.name == null;
    }

    // 省略hashCode方法和其他方法    
}

上記のサンプル コードでは、Person クラスを作成し、equals メソッドをオーバーライドしました。 equals メソッドをオーバーライドするときは、まず 2 つのオブジェクトの参照が同じかどうかを判断し、同じであれば直接 true を返すことができます。次に、obj が空で同じクラスに属しているかどうかを判断し、obj を Person 型に変換し、名前と年齢の値が等しいかどうかを比較します。

以下は、Person を使用するためのサンプル コードです:

Person person1 = new Person("Tom", 20);
Person person2 = new Person("Tom", 20);
boolean result = person1.equals(person2);
System.out.println(result); // 输出结果为 true

上記のコードでは、同じ名前と年齢の値を持つ 2 つの Person オブジェクト、person1 と person2 を作成しました。 person1.equals(person2) を呼び出すと、equals メソッドを書き換えているため、比較時に name と age の値が比較されるため、返される結果は true になります。

要約すると、equal とイコールは、オブジェクトが等しいかどうかを比較するために Java で一般的に使用されるメソッドです。 equal メソッドは、参照比較を通じて 2 つのオブジェクトが等しいかどうかを判断する Object クラスのメソッドです。equals メソッドは、比較ルールをカスタマイズできるカスタマイズされた比較メソッドです。実際の開発では、特定のニーズに応じてこれら 2 つの方法を使用してオブジェクトを比較することを選択する必要があります。

以上がJavaのequalメソッドとequalsメソッドの区別の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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