什麼是equals方法
指示其他某個對象是否與此對象相等,equals方法存在Object類中,我們編寫的類繼承Object,可以覆蓋Object的equals方法來實現我們的邏輯,去判斷兩個對象是否相等。
Object類中的equals方法
一起來看看Object類中的源代碼
public boolean equals(Object obj) { return (this == obj); }
我們可以觀察到幾點:
equals方法是public修飾的,外部類是可以訪問的
equals方法的返回值boolean,true為兩個對象相等,false為兩個對象不等
參數類型為Object,是其子類都可以比較
方法體判斷的是兩者的引用是不是相等
實際上為什麼要編寫equals
在我們的實際的操作中,有下面的例子:
@Test public void whyUseEquals() { User user1 = new User("xujianguo", 21); User user2 = new User("xujianguo", 21); System.out.println(user1.equals(user2)); }
發user1和user2的name都是xujianguo,age都是21的,按照我們的邏輯是同一個人,都是如果沒有重寫equals方法,默認采用Object的equals方法的話,結果就是false的,所以我們必須實現equals來實現我們的邏輯。
高質量equals方法
1.使用instanceof操作符檢查參數是否為正確的類型