int與integer的比較大小
阿新 • • 發佈:2019-01-22
Integer是int的封裝類,int與Integer比較時,Integer會自動拆箱,無論怎麼比,int與Integer都相等,
Integer比較時,檢視java原始碼可知道,在-128與127之間,Integer會自動存在記憶體中,再有時,直接從記憶體中去取,不在這個範圍則會new新物件,所以Integer與new Integer永遠都不相等。
範例
int a=127;int b=127;Integer c = 127;Integer d = new Integer(127); Integer e=127;
a==b true; a==c;true c==d;false; a==d;true; c==e true;
int a=128;int b=128;Integer c=128;Integer d=128;Integer e = new Integer(128);
a==b true; a==c true; a==e true; c==d false; c==e false;
java的自動裝箱與自動拆箱
自動裝箱就是將基本資料型別轉換為包裝器型別,自動拆箱就是將包裝器型別轉為基本資料型別。
裝箱過程系統執行了Integer.valueOf(99);
在-128到127範圍,會生成同一個物件,在範圍之外,會執行new Integer(99);
裝箱的過程會建立對應的物件,這個會消耗記憶體,所以裝箱的過程會增加記憶體的消耗,影響效能
拆箱過程執行了int totlprim = total.intValue();
直接返回value