在Java中,equals()
方法用于比較兩個對象是否相等。這個方法屬于Object
類,因此所有Java對象都繼承了這個方法。默認情況下,equals()
方法比較的是兩個對象的內存地址,即判斷它們是否指向同一個對象。但是,你可以重寫equals()
方法來自定義比較規則。
以下是一個示例,展示了如何在自定義類中重寫equals()
方法:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重寫equals方法
@Override
public boolean equals(Object obj) {
// 檢查是否為同一個對象
if (this == obj) {
return true;
}
// 檢查是否為null和類別是否相同
if (obj == null || getClass() != obj.getClass()) {
return false;
}
// 類型轉換并比較屬性值
Person person = (Person) obj;
return age == person.age && (name != null ? name.equals(person.name) : person.name == null);
}
}
在這個示例中,我們重寫了equals()
方法,使其比較Person
對象的name
和age
屬性。現在,如果兩個Person
對象具有相同的name
和age
,那么它們將被認為是相等的。
要比較兩個對象,只需調用其中一個對象的equals()
方法并將另一個對象作為參數傳遞:
Person person1 = new Person("Alice", 30);
Person person2 = new Person("Alice", 30);
boolean isEqual = person1.equals(person2); // 返回true,因為兩個對象的name和age相同