共計 980 個字符,預計需要花費 3 分鐘才能閱讀完成。
在 Java 中,可以使用 equals()
方法來比較兩個對象是否相等。該方法是 Object 類的一個方法,所有的類都繼承自 Object 類。
默認情況下,equals()
方法比較的是兩個對象的引用是否相等,即它們是否指向同一個內存地址。如果想要比較對象的內容是否相等,需要在類中重寫 equals()
方法,一般也需要同時重寫 hashCode()
方法。
以下是一個重寫 equals()
方法的示例:
public class MyClass {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;
}
MyClass myObj = (MyClass) obj;
return age == myObj.age && Objects.equals(name, myObj.name);
}
@Override
public int hashCode() {return Objects.hash(name, age);
}
}
在這個例子中,我們重寫了 equals()
方法來比較兩個對象的 name 和 age 屬性是否相等。我們使用 getClass()
方法來檢查兩個對象是否屬于同一個類,然后再逐個比較屬性的值。如果兩個對象的屬性值都相等,我們認為它們是相等的。
需要注意的是,equals()
方法必須遵循以下幾個規則:
- 自反性:
x.equals(x)
必須返回 true。 - 對稱性:如果
x.equals(y)
返回 true,那么y.equals(x)
也必須返回 true。 - 傳遞性:如果
x.equals(y)
返回 true,并且y.equals(z)
返回 true,那么x.equals(z)
也必須返回 true。 - 一致性:如果兩個對象沒有發生變化,那么多次調用
x.equals(y)
應該始終返回相同的結果。 - 非空性:
x.equals(null)
必須返回 false。
另外,為了確保正確性,通常還需要重寫 hashCode()
方法。在上面的示例中,我們使用了 Objects.hash()
方法來生成 hashCode 值,它會根據對象的屬性生成一個唯一的哈希碼。
丸趣 TV 網 – 提供最優質的資源集合!
正文完