簡單介紹java中的equals()方法
基本概念
equals()方法是Object類中的方法,通過Object類中的equals()方法我們可以知道,該方法是比較兩個物件的記憶體地址是否相等,下面簡單介紹一下這一個方法。
Object類中的equals()方法如下:
public boolean equals(Object obj) {
return (this == obj);
}
equals()方法
Object類中的equals()方法是比較兩個物件的地址是否相等,這個比較方式不適合我們自定義類的物件的比較;例如,如果有一個類Person,類中有name和age兩個屬性,我們認為只要這個類的兩個物件中的name和age都分別相等,那麼他們就是相等的,所以不能使用Object類中的equals()方法用於判斷Person類的兩個物件是否相等,因為它是比較兩個物件的記憶體地址是否相等。這個時候就需要為自定義類重寫Object類中的equals()方法。
重寫equals()方法的程式碼如下(僅供參考):
注意:equals()方法的重寫取決於我們如何定義兩個物件是否相等,你可以比較類中的一個屬性是否相等,例如Person類中的name屬性,如果兩個物件中的name屬性相等,你可以認為這兩個物件相等。文中重寫的equals()方法是比較類中的所有屬性,即只有兩個物件中的所有屬性都相等,才可以認為這個類的兩個物件相等。
@Override
public boolean equals(Object otherObject) {
// 判斷兩個物件是否為同一個物件
if (this == otherObject) {
return true;
}
// 判斷所比較物件是否為null
if (otherObject == null) {
return false;
}
// 判斷兩個物件是否屬於同一個類的物件
if (this.getClass() != otherObject.getClass()) {
return false;
}
// 強制型別轉換
Person other = (Person) otherObject;
// 進行屬性比較
return Objects.equals(this.name, other.name)
&& this.age == other.age;
}
下面簡單分析一下這段程式碼:第一個判斷主要是為了判斷所要進行比較的兩個物件是否為同一個物件,如果是同一個物件,直接返回true,下面的程式碼就沒有必要執行了,可以提高比較的效率;第二個判斷主要是判斷所比較物件是否為null,如果為null,直接返回false表示兩個物件不相等,因為第一個物件呼叫equals()方法,所以第一個物件不能為null,不然程式執行會報空指標,所以第二個物件為null,那麼這兩個物件肯定不相等;第三個條件用於判斷這兩個物件是否是同一個類的物件,如果不是同一個類,也沒有比較是否相等的意義;接下來就是將所比較物件進行強制轉換,最後進行類中各個屬性之間的比較,這裡有一點需要注意,就是name屬性在進行比較時,最好使用Objects類中的equals()方法進行比較,因為使用String類的equals()方法進行比較,如果第一個物件的name屬性的值為null,這個程式執行期間會報空指標異常。
相關文章
- java註解的簡單介紹Java
- 簡單介紹NMS的實現方法
- 簡單介紹PostgreSQL解析URL的方法SQL
- 簡單介紹oracle重置序列的方法Oracle
- Java併發:ThreadLocal的簡單介紹Javathread
- 簡單介紹Rust中的workspaceRust
- 簡單介紹Lua中的變數與賦值方法變數賦值
- CSRF簡單介紹及利用方法
- 關於Java中的equals方法Java
- 簡單介紹Java String Methods(上)Java
- 簡單介紹Java String Methods(下)Java
- mitmproxy中libmproxy簡單介紹MITIBM
- 簡單介紹SQL中ISNULL函式使用方法SQLNull函式
- 簡單介紹vscode除錯container中的程式的方法步驟VSCode除錯AI
- Java中 equals() 方法和 == 的區別Java
- Java正規表示式簡單介紹Java
- Webpack 的簡單介紹Web
- AOP的簡單介紹
- form表單的簡單介紹ORM
- Flownet 介紹 及光流的簡單介紹
- vue匯出excel(簡單方法完整介紹)VueExcel
- 簡單介紹js 陣列 fill() 填充方法JS陣列
- 簡單介紹MySQL列印死鎖日誌的方法MySql
- Maven簡單介紹——必要的Java管理與構建MavenJava
- RPC簡單介紹RPC
- Python簡單介紹Python
- KVM簡單介紹
- RMI簡單介紹
- HTML簡單介紹HTML
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- ajax簡單介紹
- SVG簡單介紹SVG
- Clickjacking簡單介紹
- 【Pandas】簡單介紹
- Map簡單介紹
- JSON簡單介紹JSON