== 與 equals的區別 通俗易懂

網上對應的文章小編也看了許多,多數是長篇大論,希望小編的表達方式更能讓大家理解些,歡迎留言評論

== 與 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章