Integer的一道面試題詳解

 題目就是這樣的: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一個新的對象了。這也就是爲何不同的緣由了緩存

相關文章
相關標籤/搜索