1. 程式人生 > >java自動裝箱自動拆箱==記錄

java自動裝箱自動拆箱==記錄

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進行 > >= < <=比較時,兩個都會自動拆箱