1. 程式人生 > >11、自動拆箱和裝箱

11、自動拆箱和裝箱

什麼是自動拆箱和自動裝箱?

        //自動裝箱:把基本型別轉換為包裝類型別
        Integer s1 = 123;
        
        //自動拆箱:把包裝類型別轉換為基本型別
        Integer s2 = new Integer(10);
        int i2 = s2;

以上特性是jdk5中加入的,也就是說在jdk5版本之前是不支援自動裝箱和自動拆箱的。

注意:在判斷兩個Integer型別是否相等時,要使用equals方法,不能使用"==",Integer已經重寫了Object中的equals方法。

     Integer s2 = 888;
        Integer s3 
= 888; System.out.println(s2 == s3); //false Integer s2 = 888; 相當於 Integer s2 = new Ingeter(888);s2和s3地址不一樣 System.out.println(s2.equals(s3)); //true 。equals比較的是值, == 比較的是地址

整型常量池

如果資料是在(-128~127)之間,java中在方法區中引入了一個“整型常量池”。
下面程式列印的結果

        Integer s4 = 127;
        Integer s5 
= 127; System.out.println(s4 == s5); //true System.out.println(s4.equals(s5)); //true

上面程式不會在堆中建立物件,會直接從整型常量池中拿。
比較Integer的值是否相等時,一定要使用equals方法