1. 程式人生 > >包裝類應用場景和自動裝箱、拆箱

包裝類應用場景和自動裝箱、拆箱

sys art 允許 應用 功能 包裝類 賦值 默認值 方法

包裝類應用場景和自動裝箱、拆箱

1、集合類泛型只能是包裝類;

List<Integer> list;

2、成員變量不能有默認值;

基本數據類型的成員變量都有默認值,如以上代碼 status 默認值為 0,如果定義中 0 代表失敗,那樣就會有問題,這樣只能使用包裝類 Integer,它的默認值為 null,所以就不會有默認值影響。

private Integer state;//默認為null

private int state;//默認為0 如果0表示某種意義就會有問題

3、方法參數允許定義空值;

private static void test1(int status){

    System.
out.println(status); }

看以上代碼,方法參數定義的是基本數據類型 int,所以必須得傳一個數字過來,不能傳 null,很多場合我們希望是能傳遞 null 的,所以這種場合用包裝類比較合適。

4、自動裝箱

自動裝箱即自動將基本數據類型轉換成包裝類型,在 Java 5 之前,要將基本數據類型轉換成包裝類型只能這樣做,看下面的代碼。

Integer i1 = new Integer(8);
Integer i2 = Integer.valueOf(8);
// 自動裝箱
Integer i3 = 8;

其實自動裝箱的原理就是調用包裝類的 valueOf 方法,如第 2 個方法中的 Integer.valueOf 方法。以上 3 種都可以進行轉換,但在 Java 5 之前第 3 種方法是編譯失敗的,第 3 種方法也正是現在的自動裝箱功能。另外,第一種構造器方法也不推薦使用了,已經標為廢棄了。

5、自動拆箱

自動拆箱即自動將包裝類型轉換成基本數據類型,與自動裝箱相反,有裝就有拆,很好理解。

// 自動拆箱
int i4 = i3;
int i5 = i3.intValue();

自動裝箱、拆箱不只是體現在以上的例子,在方法接收參數、對象設置參數時都能自動裝箱拆箱。繼續上面的例子,把 i3 賦值給 i4 就是實現的自動拆箱功能,自動裝箱的原理就是調用包裝類的 xxValue 方法,如 i5 中的 Integer 的 intValue 方法。

以上內容,借鑒於:http://www.php.cn/java-article-410108.html

包裝類應用場景和自動裝箱、拆箱