java中的==和equals


在java中,==兩端的變量如果賦值都為基本數據類型,那么它比較的是兩邊的值是否相等;如果==兩端的變量指向的都是引用類型的對象,那么它比較的將是兩端變量指向的對象地址是否相同(研究過Integer類代碼的小伙伴們應該啊知道,若兩個Integer類型的變量進行比較,如果它們的值在-128到127之間,Integer類是直接返回儲存於數組中的基本數據類型的數據給變量的,因此若兩個值相等,則==返回true;而如果不在這個范圍內,那么Integer類中返回的將是new Integer(數值),即一個新對象,所以這時候將是比較兩端變量指向的對象地址是否一致)。當然,==兩端的變量類型應該一致或者是能夠相互轉換的,否則編譯器會報錯。

而equals比較的是引用類型的數據(若equals兩端放基本數據類型,編譯器將會報錯,這也說明了基本數據類型並沒有equals方法),分兩種情況:首先,Object類中的equals方法比較的也是兩個引用類型對象的內存地址是否一致;其次,對於String、Integer、Long等最終類,它們內部重寫了equals方法,因此比較的是對象的值是否相同;若你自己寫了一個類,如果你想實現自己的比較邏輯,你也可以通過重寫Object類中的equals方法來實現。當然最后還要注意一點,重寫的equals方法先比較的是對象類型,類型相同才會比較對象里面的值!

以上就是java中==和equals的區別和相同之處。


免責聲明!

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



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