細說 equals(o1,o2) 與 “o1 == o2” 區別?


equals(o1,o2) 與 “o1 == o2” 區別?

首先,equals(o1,o2)只能用於對象的比較,不能用於基本數據類型(如 int、double等8種)。
(1)那么基本數據類型的相等比較用“==”而不能用equals().

接下來說,對象的相等比較,可以用equals(o1,o2) 與 “o1 == o2”,它們的區別是:

簡單說:equals(o1,o2)比較的是兩對象的內容;“o1 == o2”比較的是兩對象的地址。

詳述:

(1)先挑直觀的說,“o1 == o2”比較的是對象o1和o2在內存中是一個位置還是分存兩個位置?我們在操作對象時,都是通過引用變量來進行的。同一個對象,可以與多個引用變量掛鈎。換句話說,多個不同的引用變量可指向同一個對象(一個對象一個地址)。“o1 == o2”就是檢查引用變量o1與引用變量o2所指向是否為同一個對象(同一個地址),所以又說“o1 == o2”比較的是對象的地址。

(2)包裝類型的對象比較時,是對應值的比較。Object有默認的equals方法使用的“==”比較對象地址,所有對象都繼承自Object,同樣繼承了equals方法。可重寫equals覆蓋,同時重寫hashCode()方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM