Integer的自動拆裝箱問題
@Test
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一個
*
*/
}
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一個
*
*/
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.