ホームページ  >  記事  >  Java  >  Javaのequalsメソッドの使用法と適用可能なシナリオの詳細な説明

Javaのequalsメソッドの使用法と適用可能なシナリオの詳細な説明

WBOY
WBOYオリジナル
2024-01-11 11:55:00865ブラウズ

Javaのequalsメソッドの使用法と適用可能なシナリオの詳細な説明

Java のquals(Object) メソッドとその使用シナリオの詳細な説明

Java では、equals(Object) メソッドは非常に重要なメソッドです。 2 つのオブジェクトが等しいかどうかを比較します。この記事では、equals(Object) メソッドの使用シナリオと原則を詳細に説明し、いくつかの一般的な使用テクニックを紹介します。

1.equals(Object) メソッドの原理

Java では、すべてのクラスが Object クラスを継承し、Object クラスの equals(Object) メソッドがデフォルトの実装です。 Object クラスの equals(Object) メソッドは、2 つのオブジェクトの参照が等しいかどうか、つまり 2 つのオブジェクトが同じオブジェクトであるかどうかを実際に比較します。具体的な実装は次のとおりです。

public booleanquals(Object obj) {

return (this == obj);

}

多くの場合、比較する必要があるのは、2 つの内容が一致するかどうかです。単なる引用符ではなく、オブジェクトは等しいです。したがって、ニーズを満たすために、カスタム クラスのquals(Object) メソッドをオーバーライドする必要があります。

2.equals(Object) メソッドの使用シナリオ

  1. 基本型の値を比較

値を比較する必要がある場合2 つの基本的なタイプのうち、== 演算子を直接使用できます。たとえば、2 つの整数が等しいかどうかを比較するには:

int a = 10;
int b = 10;
if (a == b) {

System.out.println("a和b相等");

}

  1. 参照型の値を比較

2 つの参照型の値を比較する必要がある場合は、equals(Object) メソッドを使用する必要があります。たとえば、2 つの文字列が等しいかどうかを比較します。

String str1 = "Hello";
String str2 = "Hello";
if (str1.equals(str2)) {

System.out.println("str1和str2相等");

}

  1. カスタム クラスの比較
##カスタム クラスのオブジェクトを比較する必要がある場合は、比較するためにクラス内の equals(Object) メソッドをオーバーライドする必要があります。オブジェクトの内容。たとえば、2 つの Person オブジェクトが等しいかどうかを比較します。

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;
    return age == person.age && Objects.equals(name, person.name);
}

}

person person1 = new Person("Zhang San", 20);

person person2 = new Person("Zhang San", 20);
if (person1.equals(person2)) {

System.out.println("person1和person2相等");

}

3.equals(Object) メソッドの使用法ヒント

    equals(Object) メソッドの規則に従う
equals(Object) メソッドをオーバーライドする場合は、equals(Object) の規則に従う必要があります。つまり、次の条件を満たすメソッドです。

    再帰性: null 以外の参照値 x に対して、x.equals(x) は true を返す必要があります。
  • 対称性: null 以外の参照値 x および y について、x.equals(y) が true を返す場合、y.equals(x) も true を返す必要があります。
  • 推移性: null 以外の参照値 x、y、z について、x.equals(y) が true を返し、y.equals(z) も true を返す場合、x.equals( z) これも true を返す必要があります。
  • 一貫性: null 以外の参照値 x および y について、オブジェクト内の値が変更されない場合、x.equals(y) の結果は常に一貫性を保つ必要があります。
  • Non-nullability: null 以外の参照値 x に対して、x.equals(null) は false を返す必要があります。
    Objects.equals メソッドを使用する
オブジェクトの内容を比較する場合、Java が提供する Objects.equals メソッドを使用できます。 null 値。たとえば、2 つの文字列が等しいかどうかを比較するには、次のコードを使用します。

String str1 = "Hello";

String str2 = "Hello";
if (Objects.equals(str1, str2) ) ) {

System.out.println("str1和str2相等");

}

Objects.equals メソッドを使用すると、NullPointerException を回避できます。

4. 概要

この記事では、Java のquals(Object) メソッドとその使用シナリオを詳しく紹介します。実際の開発では、2 つのオブジェクトの内容が等しいかどうかを比較する必要があることがよくあるため、equals(Object) メソッドをオーバーライドすることが非常に重要です。 equals(Object) メソッドの規則に従い、Objects.equals メソッドを使用すると、オブジェクトの内容をより正確かつ安全に比較できます。この記事が、equals(Object) メソッドとその使用シナリオについての理解を深めるのに役立つことを願っています。

以上がJavaのequalsメソッドの使用法と適用可能なシナリオの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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