jdk新特性之自動裝箱與自動拆箱

1. 包裝類:

  1. java是面向對象的語言,任何事物都可以使用類進行描述,sun就使用了一些類描述java中八種基本數據類型數據

2. 八大基本數據類型對應的包裝類

      基本數據類型                包裝類

        byte                  Byte

        short                  Short

        int                   Integer

        long                  Long

 

        double                Double

        float                 Float

 

        char                  Character

 

        boolean               Boolean

 

3. 基本數據類型有了包裝類的好處:

3.1在jdk1.5之前,並沒有包裝類,當需要把引用數據類型當成基本數據類型使用時,需要手動進行轉換;jdk1.5之後,有了包裝了,基本數據類型和引用數據類型可以進行自動轉換。

3.2可以把 字符串轉換成數字類型的數據使用,也可以把數字類型數據轉換成字符串使用

3.3可以把字符串當成對應的進制數據自動進行轉換。

 

4. 自動拆裝箱

4.1 自動裝箱:將基本數據類型的值直接賦值給引用數據類型(包裝類)的過程,稱爲自動裝箱
    1. &bsp; &bsp;it ——>> &bsp;Iteger
4.2 自動拆箱:將引用數據類型(包裝類)數據直接賦值給基本數據類型的過程,稱爲自動拆箱
    1. &bsp; Iteger ——>> it

 

5. Integer底層維護的是緩衝數組

      Integer 內部維護了緩衝數組,該緩衝數組存儲的是-128~127,這些數據在一個數組中。 如果你獲取的數據是這個範圍內,那麼就直接從該緩衝區中獲取對應的數據。
public static void main(String[] args) {
    String str1 = "10";
    // 字符串轉數字
    int data1 = Integer.parseInt(str1) + 1;
    System.out.println("字符串轉數字:" + data1); // 11

    // 把數字轉換成字符串
    String string1 = Integer.toString(data1);
    System.out.println("數字轉字符串:" + string1); // "11"

    // 把字符串當成對應進制的數據使用
    String str2 = "10";
    int data2 = Integer.parseInt(str2, 2); // 二進制
    System.out.println("十進制的10轉換成二進制:" + data2);//2
    //  自動裝箱:把基本數據類型包裝成引用數據類型
    int data3 = 2;
    Integer str3 = data3;//將基本數據類型的值直接賦值給引用數據類型(包裝類)的過程,稱爲自動裝箱

    // 自動拆箱:把引用數據類型轉換成基本數據類型
    Integer integer = new Integer(2);
    int data4 = integer;// 將引用數據類型(包裝類)數據直接賦值給基本數據類型的過程,稱爲自動拆箱

    System.out.println("自動裝箱:" + str3 + "  自動拆箱:" + data4);//2 2


    // Integer 內部維護了緩衝數組,該緩衝數組存儲的是-128~127,這些數據在一個數組中。 如果你獲取的數據是這個範圍內,那麼就直接從該緩衝區中獲取對應的數據。
    Integer data5 = 127;
    Integer data6 = 127;
    System.out.println("是同一個對象嗎?" + (data5 == data6));//true
    Integer data7 = 128;
    Integer data8 = 128;
    System.out.println("是同一個對象嗎?" + (data7 == data8));//false
    Integer data9 = -128;
    Integer data10 = -128;
    System.out.println("是同一個對象嗎?" + (data9 == data10));//true
    Integer data11 = -129;
    Integer data12 = -129;
    System.out.println("是同一個對象嗎?" + (data11 == data12));//false
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發佈了28 篇原創文章 · 獲贊 12 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章