問題一:上面的輸出為啥?integer a = new integer(3);
integer b = 3;
int c = 3;
system.out.println(a == b);
system.out.println(a == c);
答案:false true
解答:第乙個是兩個引用之間的比較,他們沒有引用同一物件,所以為false
第二個是a會自動拆箱成int型別,再去和c比較,所以本質其實是基本型別的比較
問題二:上面的輸出是啥?integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
system.out.println(f1 == f2);
system.out.println(f3 == f4);
答案:true false
解答:很多人可能覺得會都是false, 因為這四個都是integer物件的引用,所以 == 比較的都不是值,而是引用
當我們給乙個integer 物件賦乙個int值的時候,呼叫的是integer 的valueof 方法,所以去看看integer裡面的原始碼就會發現,其實-128 - 127之間的數字不會new新的物件,而是直接類載入的時候就直接快取了對應的物件,需要時直接取的快取裡面的。
Integer自動拆箱 自動裝箱
package com.tmt.test code public class zhuangchaixiiangtest 這個的運算結果是什麼呢?new integer 128 int 128 true new integer 128 new integer 128 false integer 127...
Integer 裝箱拆箱 比較
integer i1 40 integer i2 40 integer i3 0 integer i4 new integer 40 integer i5 new integer 40 integer i6 new integer 0 integer i7 0 40 integer i8 i1 0 ...
Integer類的自動拆箱和裝箱
一 自動裝箱 自動裝箱就是自動將基本資料型別轉換為包裝器型別。integer a 200 這句 經編譯後其實為 integer a integer.valueof 200 二 自動拆箱 拆箱就是自動將包裝器型別轉換為基本資料型別。integer a 10 int b a 拆箱這段 經過編譯後為 in...