java の等しいメソッドはオブジェクト クラスのメソッドであり、参照型を決定するためにのみ使用できます。デフォルトでは、等しいメソッドはアドレスが等しいかどうかを決定します。このメソッドは、多くの場合、サブクラスでオーバーライドされ、アドレスが等しいかどうかを決定します。使用構文は「public booleanquals(Object obj) {return (this == obj);}」のようになります。
#このチュートリアルの動作環境: Windows 10 システム、Java8、Dell G3 コンピューター。
equals メソッド in Java
public boolean equals(Object obj) { return (this == obj); }
"hello".equals("abc");説明: これは現在のオブジェクトを指します。これは、equals メソッドを呼び出した人を指します。上記の hello は、equals を呼び出します。つまり、これは、文字列 hello と、== の右側にある obj オブジェクトを指します。 、受信 abc です。 3.equals メソッドを書き直す演習
#演習 1:
package object; /* 判断两个person对象的内容是否相等 如果两个person对象的各个属性值都一样,则返回true,反之返回false */ public class EqualsExercise { public static void main(String[] args) { Person person1 = new Person("jack", 10, '男'); Person person2 = new Person("jack", 10, '男'); System.out.println(person1.equals(person2)); //输出结果是true } } class Person { private String name; private int age; private char gender; //重写Object的equals方法 public boolean equals(Object obj) { //如果比较的两个对象是同一个对象,则直接返回true if (this == obj){ //this就代表调用equals方法的那个对象,obj就是方法里面的实参 return true; } //类型判断 if (obj instanceof Person){ //obj是Person,我们才比较 //进行 向下转型(即obj转成Person); 因为我需要得到obj的各个属性,如果不转型,拿不到 Person p = (Person) obj; return this.name.equals(p.name) && this.age == p.age && this.gender == p.gender; } //如果不是person,则直接返回false;总不能拿一个人跟一个狗比 return false; } public Person(String name, int age, char gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getGender() { return gender; } public void setGender(char gender) { this.gender = gender; } }
ヒント:
Instanceof の使用法: result = object instanceof class
Instanceof には、左側にオブジェクト、右側にクラスがあります。オブジェクトがクラスまたはサブクラスによって作成されたオブジェクトである場合、正しい場合は true が返され、それ以外の場合は false が返されます。
演習 2:
説明:
- sout1: p1と p2 は両方ともオブジェクトであるため、 == はアドレスが同じかどうかを判断します。 false
- sout2: p1.name と p2.name は両方とも文字列であるため、ここでの等しいものは String クラスのメソッドの等しいものを呼び出します。判定するのは内容が同じかどうかです true
- sout3: p1もp2もオブジェクトなのでここでのequalsはObjectクラスのequalsメソッドです 判定するのはアドレスが同じかどうかです、 false
- sout4: s1 と s2 は両方とも String クラスのオブジェクトであるため、ここでの equals は String クラスの equals メソッドを呼び出し、内容が同じであるかどうかを判断します。 true
- sout5 : s1 と s2 は両方ともオブジェクトであるため、 == はアドレスが同じであるかどうかを判断します。 false
演習 3:
説明:
- sout1: 65 と 65.0 は等しい、true
- sout2: 文字の本質は依然として数値です。AscII テーブルを確認してください。 A は 12、真です
- sout3: 何も言うことはありません
- sout4: 何も言うことはありません
- sout5: 何も言うことはありません
- sout6: 同じタイプではありません、 == 直接コンパイル エラー
関連する推奨事項: 「Java ビデオ チュートリアル 」
以上がJavaのequalsメソッドとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。