java中equals和==的比較

在java基本類型的比較可以用equals和==兩種方式。

大家都知道使用equals,是比較連個對象的引用,==比較的是對象本身,但是有些情況跟我想象的還是有差別的,看下面的例子:


如果按照我們原有的思維,輸出的肯定是false,true,其實並不是看輸出結果:


在看一個例子,如下:


輸出結果爲:



在JDK5.0及其以上版本,JVM在啓動的時候爲基本類型的包裝類提供了緩衝池,比如Integer池的大小-128~127

當我們使用一個值時,JVM會先到緩衝池查看是否有相同值得對象,如果有就用現成的,如果沒有就重新創建一個。

所以對於Integer來說,-128~127之間的數字是從緩衝池取得,所以這個範圍內的值在使用==號比較的時候返回的

是true,因爲他們的內存地址是相同的,128這個值超出了緩衝池的範圍,是新new出來的,內存地址不一樣,所以

返回的是false

發佈了37 篇原創文章 · 獲贊 22 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章