題目就是這樣的:java
Integer i1=100; Integer i2=100; Integer i3=1000; Integer i4=1000; System.out.println(i1==i2); System.out.println(i3==i4);
結果會是什麼呢?數組
true
false
和你想的不同吧,這是爲何呢?根據java編譯機制,Interger i1=100會在編譯時變成Interger i1=Integer.valueOf(100),而這個所謂的valueOf()在實現的時候會判斷你的數字是否在緩存的-128到127之間,若是在就直接從緩存的數組裏面返回一個對象,若是沒有就須要new一個新的對象了。這也就是爲何不同的緣由了緩存