#Java 裝箱拆箱java
自動裝箱 把基本類型用它們相應的引用類型包裝起來,使其具備對象的性質。int包裝成Integer、float包裝成Float緩存
Integer num =10;實際上系統執行了 Integer num= Integer.valueOf(10);優化
public static Integer valueOf(int i) { //若是在範圍range [-128, 127]便返回指向IntegerCache.cache緩存中已經存在的對象的引用,不然建立Integer新對象。 if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
自動拆箱 和裝箱相反,將引用類型的對象簡化成值類型的數據code
int n = num;實際上系統執行了 int i=num.intValue();對象
private final int value; public int intValue() { return value; }
java使用該機制是爲了達到最小化數據輸入和輸出的目的,這是一種優化措施,提升效率。包裝器緩存範圍:效率
Boolean: (所有緩存)引用
Byte: (所有緩存)float
Character (<=127 緩存)數據
Integer (-128~127 緩存)static
Short (-128~127 緩存)
Long (-128~127 緩存)
Float (沒有緩存)
Doulbe (沒有緩存)