Integer的自動拆裝箱問題
public void test1(){
Integer aInteger=100;
Integer bInteger=100;
System.out.println(aInteger==bInteger);//true
Integer cInteger=200;
Integer dInteger=200;
System.out.println(cInteger==dInteger);//false
/**
* 原因:
* Integer aInteger=100;實際內部裝箱為:Integer integer=Integer.valueOf(100);
* 而在Integer.vavalueOf()方法內有IntegerCache快取,程式碼為:
* public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
IntegerCache.low=-128 IntegerCache.high=127,所以-128~127以內的數是有快取的,超過該範圍則會重新new一個
*
*/
}