91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中為什么int==Integer為true

發布時間:2021-12-31 16:52:19 來源:億速云 閱讀:283 作者:iii 欄目:大數據

本篇內容介紹了“java中為什么int==Integer為true”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

int==Integer為什么返回true

先看現象吧

執行下面的代碼及輸出結果:

int a = 1;Integer b = 1;Integer c = new Integer(1);System.out.println(a==b);//trueSystem.out.println(a==c);//trueSystem.out.println(b==c);//false

通常大家對此的解釋是,==對于基本類型來說比較的是值,對于引用類型來說比較的是引用,即指向的對象的內存地址。這樣解釋沒錯,b==c結果為false毋庸置疑,因為兩個都是引用類型。但是為什么a==b(a==c)一個是基本類型一個是引用類型,比較的時候還是值比較呢?

這個時候我們不妨把.java源文件編譯后的.class文件使用反編譯工具反編譯成源碼,看看虛擬機內部是如何處理a==b的。

.class文件使用jd-gui反編譯后的:

int a = 1;Integer b = Integer.valueOf(1);Integer c = new Integer(1);System.out.println(a == b.intValue());System.out.println(a == c.intValue());System.out.println(b == c);

看到這想必大家都明白了吧,其實基本類型a和引用類型b比較時,引用類型b調用自身的intValue()方法獲取Integer實際表示的int類型的值,即a == b.intValue()還是兩個int類型的變量進行值比較。符合上述:==對于基本類型來說比較的是值,對于引用類型來說比較的是引用,即指向的對象的內存地址。

基本類型及引用類型在內存中的存儲方式

說到這,還要解釋下為什么兩個引用類型的值一樣而引用不一樣以及基本變量為什么是值比較。

其實基本變量int a在內存里只有一份,保存在棧(保存基本類型的變量數據及引用類型的引用)中,Integer b和Integer c中的int值都指向棧中同一個int,不會重新在棧中創建相同的int值。

而對于Integer b和Integer c,其實例是保存在堆(保存所有new出來的對象)中,雖然表示的int值相同,但是在堆中有兩份,每次new都會在堆中開辟一片空間保存new的內容,故Integer b和Integer c分別在兩片不同的內存空間存儲,所以指向的內存地址不同。

而對于Integer b = 1;其反編譯后為Integer b = Integer.valueOf(1); 而valueOf()方法內部是調用了new。

JDK中Integer.valueOf()源碼:

public static Integer valueOf(int i) {        if (i >= IntegerCache.low && i <= IntegerCache.high)            return IntegerCache.cache[i + (-IntegerCache.low)];        return new Integer(i);}

“java中為什么int==Integer為true”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河间市| 屏边| 六盘水市| 张家口市| 缙云县| 苏尼特左旗| 克什克腾旗| 鄂托克旗| 丹凤县| 赣州市| 桃园市| 南安市| 仪陇县| 隆子县| 唐海县| 平果县| 江口县| 博乐市| 左贡县| 广南县| 黎平县| 开封市| 南城县| 津南区| 前郭尔| 九寨沟县| 璧山县| 岳阳市| 合肥市| 区。| 佛山市| 宜丰县| 万盛区| 姜堰市| 塔城市| 太和县| 绿春县| 吴桥县| 凤台县| 富顺县| 阆中市|