1. 程式人生 > >/-----------關鍵字:integer緩存

/-----------關鍵字:integer緩存

boolean stat spa character 我們 對象 -1 補充 ima

M1:關於integer緩存

M2:代碼如下

 1 public class TestInteger {
 2     public static void main(String[] args){
 3         Integer i1 = 127;
 4         Integer i2 = 127;
 5         System.out.println(i1==i2);
 6         
 7         Integer i3 = 128;
 8         Integer i4 = 128;
 9         System.out.println(i3==i4);
10 11 Integer i5 = -128; 12 Integer i6 = -128; 13 System.out.println(i5==i6); 14 15 Integer i7 = -129; 16 Integer i8 = -129; 17 System.out.println(i7==i8); 18 } 19 }

M3:結果

技術分享

M4:分析

為了減少頻繁創建對象造成系統壓力,類在加載的時候就將-128~127的integer對象創建好放內存裏,當我們要用的時候就會在這片內存裏面找,找到了就引用它的地址,沒找到就再重新弄塊地創建。那麽這裏的i1和i2內存裏本來就有直接引用自然就相同。i3和i4都會去指定內存裏找,沒有都會重新找塊地創建,引用的地址自然就不相同。

M5:補充 

    • Boolean:(全部緩存)
    • Byte:(全部緩存)

    • Character(<= 127緩存)
    • Short(-128 — 127緩存)
    • Long(-128 — 127緩存)
    • Integer(-128 — 127緩存)
    • Float(沒有緩存)
    • Doulbe(沒有緩存)

M6:備註

歡迎大家一起學習,討論!如有疑問請給我留言!

/-----------關鍵字:integer緩存