java - equals()
一 equals 方法
equals() 是超類Object 中的一個方法,用來比較兩個物件是否相等。
二 equals 和 ==
在 java 中所有的物件都有標識(記憶體地址)和狀態(資料),使用未重寫的 equals() 方法進行物件的比較 和使用 “==” 進行比較都是在比較兩個物件的記憶體地址是否相等,而不是它們的狀態(資料)是否相等。
未重寫的 equals 方法的原始碼:
public boolean equals(Object obj) {
return (this == obj);
}
如果我們想要實現物件之間資料的比較,那麼我就應該要重寫 equals 方法。在 JDK 中,String、Math 等都已經對 equals 進行了重寫。所以我們在進行 String 的比較時,我們使用 equals 進行比較就是在對資料進行比較。
三 equals 的五大規則
- 自反性
任何非空引用值 x ,x.equals(x) 都返回 true - 對稱性
對於任何非空引用值 x 和 y,當 x.equals(y) 等於 true 時,y.equals(x) 也必須等於 true - 傳遞性
對於任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,並且 y.equals(z) 返回 true,那麼 x.equals(z) 應返回 true - 一致性
對於任何非空引用值 x 和 y,多次呼叫 x.equals(y) 始終返回 true 或始終返回 false,前提是物件上 equals 比較中所用的資訊沒有被修改 - 對於任何非空引用值 x,x.equals(null) 都應返回 false
四 不同的型別應該進行不同的比較方式
- 物件域,使用equals方法 。
- 型別安全的列舉,使用equals或== 。
- 可能為null的物件域 : 使用 == 和 equals 。
- 陣列域 : 使用 Arrays.equals 。
- 除float和double外的原始資料型別 : 使用 == 。
- float型別: 使用Float.foatToIntBits轉換成int型別,然後使用==。
- double型別: 使用Double.doubleToLongBit轉換成long型別,然後使用==。
相關文章
- java equalsJava
- java == 和equalsJava
- Java equals 和 == 完全解析Java
- Java equals和==完全解析Java
- 【Java】equals 和 == 的區別Java
- Java備忘錄《“==” 和 “equals”》Java
- Java中Equals使用總結Java
- java 中equals和==的區別Java
- 說說Java裡的equals(上)Java
- Java中(==)與equals的區別Java
- 關於Java中的equals方法Java
- 搞懂 Java equals 和 hashCode 方法Java
- java equals()方法的注意事項Java
- 深入理解Java的==和equalsJava
- java基礎:Object的equals方法JavaObject
- Java中equals和==的區別Java
- java String的equals,intern方法Java
- java~重寫hashcode和equalsJava
- Java面試題 equals()與"=="的區別?Java面試題
- 從原始碼探究JAVA的equals和==原始碼Java
- Java中 equals() 方法和 == 的區別Java
- 在java中“equals”和“==”的區別Java
- (Java)字串處理--equals()和equalsIgnoreCase()Java字串
- 說說Java裡的equals(中)- Java那些事兒Java
- 簡單介紹java中的equals()方法Java
- Java中equals和==比的是什麼Java
- JAVA基礎(一)equals和==和hashCodeJava
- Java基礎系列-equals方法和hashCode方法Java
- Java中hashcode和equals效能注意點 - ShaiJavaAI
- Java基礎-- ==號與equals()方法的區別Java
- JAVA程式設計習慣之equals對比Java程式設計
- Java經典面試題: == 和 equals( )的區別Java面試題
- Java物件之間的比較之equals和==Java物件
- Java中擺脫equals,compareTo和toStringJava
- java中equals方法與==邏輯運算子薦Java
- java自定義equals函式和hashCode函式Java函式
- Java之String的equals與contentEquals區別Java
- Java基礎- ==和equals和hashCode的區別Java