java自動裝箱自動拆箱==記錄
阿新 • • 發佈:2018-12-15
kage com.daxue;
public class Test {
public static void main(String[] args) {
//①自動裝箱
Integer a = 10;
Integer b = 10;
System.out.println(a==b);
//②
Integer aInteger = 1000;
Integer bInteger = 1000;
System.out.println(aInteger==bInteger);
}
}
/*由①和②可知:
* 根據自動裝箱的規則
* Integer intObj = 1 <==> Integer intObj = Integer.valueOf(1);
* valueOf方法原始碼:
* public static Integer valueOf(int i){
* assert IntegerCache.high >= 127;
* if(i >= IntegerCache.low && i <= IntegerCache.high){
* return IntergeCache.cache[i+(-IntegerCache.low)]
* }
* return new Integer(i);
* }
*
* 由上可知:i在[-128,127]範圍內,直接從快取中取出一個事先new好的物件返回,即返回快取中的物件
* 因為超出範圍,new了一個新的物件,者就是==號不成立的原因
*/
//自動拆箱: Integer和int型別進行 == > >= < <=比較時,會把Integer自動拆箱
//Integer和Integer進行 > >= < <=比較時,兩個都會自動拆箱