1.包裝器類型列表
你知道 Java 有 8 種原始類型,它們是不是類的類型。一方面,這很好——它們很簡單,佔用的空間也很小。另一方面,有時類正是我們所需要的。您將在下一課中找到確切原因。
那麼可以做什麼呢?
從 Java 的第五個版本開始,每個原始類型都獲得了一個孿生類。每個這樣的類都存儲一個具有特定類型值的字段。這些類稱為包裝器類型,因為它們將原始值包裝在類中。
這是這些類型的列表。你知道任何?
| 原始類型 | 包裝類 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
基本類型的名稱以小寫字母開頭,而包裝類的名稱以大寫字母開頭。一些類名也有點長:Integerinstead ofint和Characterinstead of char。
包裝類的所有對像都是不可更改的(不可變的)。
該類的簡化代碼Integer如下所示:
| 代碼 | 筆記 |
|---|---|
|
變量 構造函數 方法返回值 靜態方法為變量創建一個新 Integer對象int |
2. 將 an 轉換int為 anInteger
包裝器類型被認為是它們的原始兄弟姐妹的對應物:您可以輕鬆地創建一個對應於原始類型的包裝器對象。
下面我們以int類型為例,分析原始類型是如何與對應的包裝類型進行交互的。int從 an到 an的轉換代碼Integer如下所示:
要將 an 轉換int為 an Integer,您需要編寫以下代碼:
Integer name = new Integer(value);
其中name是變量名Integer,value是包裝後的int值。
例子:
| 代碼 | 筆記 |
|---|---|
|
|
|
|
|
要將 an 轉換Integer為 an int,您需要編寫以下代碼:
int name = variable.intValue();
其中name是變量名int,variable是對對象的引用Integer。
例子:
| 代碼 | 筆記 |
|---|---|
|
|
|
|
|
|
|
|
3. 自動裝箱和拆箱
但即使是簡單的類型操作Integer也不容易編寫。
正如我們之前所說,Integer類型是不可改變的(不可變的)。要創建Integer具有新int值的對象,您需要顯式創建一個新Integer對象。int也就是說,獲取存儲在對象內部的值很容易Integer——只需調用該intValue()方法即可。
例子:
| 代碼 | 描述 |
|---|---|
|
包裹5在一個Integer對像中從對像中獲取值 創建一個新對象(等於10) IntegerInteger |
這是相當麻煩的代碼,你不覺得嗎?
Java 的創造者是這麼認為的,所以他們教編譯器如何自動執行這些操作。intan到 an的自動轉換Integer稱為自動裝箱(自動將值放入盒子中),反向操作(將 an 轉換Integer為 an int)稱為拆箱。
| 你的代碼 | 編譯器看到了什麼 |
|---|---|
|
|
|
|
|
|
由於自動裝箱和拆箱,您可以安全地將 an 分配int給Integer變量,反之亦然。您可以編寫任何復雜的表達式,而無需區分類型int和Integer類型。
例子:
| 代碼 | 編譯器將生成什麼 |
|---|---|
|
|
|
|
4.比較包裝器變量
自動裝箱和拆箱是簡單透明的過程。我們根據需要使用語句,根據需要new Integer()調用方法。intValue()
一切對你來說都很好,很容易,程序員。請記住,如果您比較 anInteger和 an Integer,則比較基於參考而非值。
| 代碼 | 控制台輸出 |
|---|---|
|
|
|
|
和a變量b不存儲int值。它們存儲對對象的引用。這意味著記住如何正確比較它們很重要:
| 錯誤的 | 正確的 |
|---|---|
|
|
GO TO FULL VERSION