網上對應的文章小編也看了許多,多數是長篇大論,希望小編的表達方式更能讓大家理解些,歡迎留言評論
== 與 equals 這麼理解
方式一:
==
先想到是否是基本數據類型
基本數據:比較值是否相等
不是基本類型:比較引用是否指向同一個對象
equals
先想到是否被重寫
被重寫如String,Integer類都被重寫過:比較值相等
沒有被重寫Object:比較引用是否指向同一個對象(源碼是==,因爲不是基本數據類型so比較的是同一對象)
對於內存的存放可以參考小編的這篇文章:
https://blog.csdn.net/weixin_39382337/article/details/79427181
實例一:
對於實例一來說:
String不是基本數據類型 so:==是比較是否指代同一對象
1:s1==s2 s1是字符串常量,s2會先在緩存池中找是否有此字符串,so true
2: s1==s3 s1是字符串常量 s3是new對象存在堆中,不是同一對象 so false
3: s3==s4 s3是new對象存在堆中, s4也是new對象存在堆中,不是同一對象 so false
String是重寫過的equals so: equals是比較值相等
所以就不用多說了吧全是true
1:Object類沒有重寫
2.String類被重寫
總結不易,點個贊,關注下唄
轉載請標註原文地址:https://blog.csdn.net/weixin_39382337/article/details/89976784