實例化Integer涉及到整型數的自動拆裝箱,在進行自動拆裝箱時,編譯器會使用Integer.valueof()來創建Integer實例 Integer.valueof()的源代碼: public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 簡單地解釋這段代碼,就是如果傳入的int在IntegerCache.low和IntegerCache.high之間(IntegerCache.low 默認是-128;IntegerCache.high默認是127),那就嘗試看前面的緩存中有沒有打過包的相同的值,如果有就直接返回(所以執行i2=127時並沒有重新創建實例,則i1和i2爲同一個實例的引用,所以輸出爲 true,true),否則就創建一個Integer實例(所以i3,i4爲兩個不同實例的引用,其中實例的值相同,所以輸出false,true)。
Java 中integer與int的區別
平常用的不多,可是面試,筆試經常遇到的一個問題就是 int 與integer的區別,廢話不多說,我們直接上圖吧。
其中答案是:true;true;false,true
其實原因很簡單:
integer是int的一個封裝類,int是一個基本數據類型,integer是一個類。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.