1.Object類的equals()方法:
比較兩個物件是否是同一個物件,equals() 方法比較兩個物件,是判斷兩個物件參考指向的是同一個物件,即比較 2 個物件的記憶體地址是否相等,是則回傳true
Object類是所有類的父類,它的equals方法自然會被所有類繼承,有一個子 類String對equals方法進行了覆寫(重寫),使其具有了新功能
2.Object類的equals()方法與==沒區別
Java.lang.String重寫了equals()方法,把equals()方法的判斷變為了判斷其值
當有特殊需求,如認為屬性相同即為同一物件時,需要重寫equals()

總結:
1.基本資料型別資料值只能用
2.對于參考資料型別,和Object的equals方法是一樣的,(查看原始碼)
由于String類對父類Object的equals方法的重寫,導致equals與= =唯一的區別在于比較物件
例題 :
重寫比較規則,判斷兩名學員(Student)是否為同一物件
Student相關屬性
Id(學號)、name(姓名)、age(年齡)
如果兩名學員的學號以及姓名相同,則為同一物件

1 對 Student類進行封裝 然后在里面重寫equals方法
方法代碼:
public class Student {
private int id;
private String name;
private int age;
@Override //重寫equals方法
public boolean equals(Object obj) {
if(obj instanceof Student){
Student s1=(Student)obj;
return this.id==s1.id&&this.name==s1.name&&this.age==s1.age;
}else {
System.out.println("錯誤");
return false;
}
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 static void main(String[] args) {
Student s1 = new Student(1,"張三",18);
Student s2 = new Student(1,"張三",18);
Student s3 = new Student(1,"張三",18);
Student s4 = new Student(1,"張三",20);
System.out.println(s1.equals(s2));
System.out.println(s3.equals(s4));
}
以上程式執行結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237626.html
標籤:java
上一篇:序列化流和反序列化流的使用
下一篇:【每日一題】力扣48.旋轉影像
