#Java の基本データ型が等しいかどうかを判断するには、「==」を直接使用します。等しい場合は true を返し、そうでない場合は false を返します。
obj1==obj2 2 つの参照変数 obj1 と obj2 が等しいかどうか、つまり、それらが指すオブジェクトが同じオブジェクトであるかどうかを判断します。つまり、2 つの変数が指すメモリ アドレスが等しい場合にのみ true を返すことができます。各オブジェクトには独自のメモリがあるため、true を返すには同じオブジェクトを指す必要があります。
2 つのオブジェクト (1 つのオブジェクトではなく、2 つのオブジェクトがそれぞれ独自のメモリを持っている) が等しいかどうかのルールをカスタマイズしたい場合は、クラスの equals() メソッドをオーバーライドする必要があります。オブジェクトの定義。equals() メソッドがオーバーライドされていない場合、デフォルトの比較方法は 2 つのオブジェクトが同じオブジェクトであるかどうかを比較します。
Java API では、一部のクラスは、equals() メソッドをオーバーライドします。その比較ルールは次のとおりです:equals メソッドのパラメーターが null でなく、2 つの変数の型と内容が同じである場合にのみ、比較します。結果は真実です。
これらのクラスには、String、Double、Float、Long、Integer、Short、Byte、Boolean、BigDecimal、BigInteger などが含まれます。たくさんありますが、これらは一般的なものです。API で確認できます。詳細については、クラス内の equals() メソッドを見てください。
equals() メソッドを書き換える手順は通常次のとおりです:
1. まず、「==」を使用して、それらが等しいかどうかを判断します。
2.equals() メソッドのパラメータが null かどうかを確認します。null の場合は、現在のオブジェクトを null にすることはできないため、false を返します。null の場合、equals() メソッドを呼び出すことはできません。そうでない場合は、java.lang.NullPointerException 例外がスローされます。
3. パラメータが null でない場合、2 つのオブジェクトのランタイム クラス (getClass() で取得) が等しくない場合は false を返し、そうでない場合は判定を続けます。
4. クラスのメンバーが等しいかどうかを判断します。気軽に遊んでみてください。
例:
public class Dog { private int age; private String name; public Dog(int age,String name){ this.age=age; this.name=name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object obj) { if(obj==null){ return false; } if(this==obj){ return true; } if(obj instanceof Dog){ Dog dog=(Dog)obj; if(dog.age==this.age&&dog.name.equals(this.name)){ return true; }else{ return false; } } return false; } public static void main(String[] args){ Dog dog1=new Dog(12,"wangcai"); Dog dog2=new Dog(12,"wangcai"); Dog dog3=new Dog(16,"wangcai"); System.out.println(dog1.equals(dog2));//true System.out.println(dog1.equals(dog3));//false }}
Java の詳細については、Java 基本チュートリアル を参照してください。
以上がJavaで等価性を判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。