Java的自動裝箱與拆箱小結

Java中,裝箱就是  自動將基本數據類型轉換爲包裝器類型;拆箱就是  自動將包裝器類型轉換爲基本數據類型。

自動裝箱與拆箱的特點有

(1)包裝器類型與基本數據類型之間可以進行比較,以及運算,在過程中,需要將包裝器類型拆箱,再進行比較及運算
        (2)包裝器類型之間也可以進行比較及運算,也是需要先將其拆箱,再進行比較及運算。
        (3)如果值不在-128~127之間,則在裝箱的時候,會創建一個新的對象,float類型及double類型則一定會創建新的對象。

(4)包裝器類型的equals方法經過覆蓋了object類的equals方法,查看源碼可知它先判斷兩個對象是否是同一類型,如果不是的話,就返回false,如果是的話,再比較對象中存的值。

        int a = 1;
        Integer b = 1;
        Integer c = 1;
        Integer d = 2;
        Integer e = 3;
        Integer f = 128;
        Integer g = 128;
        Long h = 3L;
        Double m = 4.0;
        Double n = 4.0;
        Float p = 5f;
        Float q = 5f;
        System.out.println("a == b : " + (a == b));  //true
        System.out.println("b ==c : " + (b == c));  //true
        System.out.println("e == (c + d) : " + (e == (c + d)));  //true
        System.out.println("e.equals(c + d) : " + (e.equals(c + d)));  //true
        System.out.println("h == (c + d) : " + (h == (c + d))); //true
        System.out.println("h.equals(c + d) : " + (h.equals(c + d)));  //false
        System.out.println("f == g : " + (f == g)); //false
        System.out.println("m == n : " + (m == n)); //false
        System.out.println("p == q : " + (p == q)); //false
        System.out.println("m == d * 2 : " + (m == d * 2)); //true
        System.out.println("p == (d + e) : " + (p == (d + e))); //true

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章