標籤:
雖然 Java 語言是典型的物件導向程式設計語言,但其中的八種基礎資料型別 (Elementary Data Type)並不支援物件導向編程,基本類型的資料不具備“對象”的特性——不攜帶屬性、沒有方法可調用。 沿用它們只是為了迎合人類根深蒂固的習慣,並的確能簡單、有效地進行常規資料處理。
這種藉助於非物件導向技術的做法有時也會帶來不便,比如參考型別資料均繼承了 Object 類的特性,要轉換為 String 類型(經常有這種需要)時只要簡單調用 Object 類中定義的toString()即可,而基礎資料型別 (Elementary Data Type)轉換為 String 類型則要麻煩得多。為解決此類問題 ,Java為每種基礎資料型別 (Elementary Data Type)分別設計了對應的類,稱之為封裝類(Wrapper Classes),也有教材稱為外覆類或資料類型類。
基礎資料型別 (Elementary Data Type)及對應的封裝類
| 基礎資料型別 (Elementary Data Type) |
對應的封裝類 |
| byte |
Byte |
| short |
Short |
| int |
Integer |
| long |
Long |
| char |
Character |
| float |
Float |
| double |
Double |
| boolean |
Boolean |
每個封裝類的對象可以封裝一個相應的基本類型的資料,並提供了其它一些有用的方法。封裝類對象一經建立,其內容(所封裝的基本類型資料值)不可改變。
基本類型和對應的封裝類可以相互裝換:
- 由基本類型向對應的封裝類轉換稱為裝箱,例如把 int 封裝成 Integer 類的對象;
- 封裝類向對應的基本類型轉換稱為拆箱,例如把 Integer 類的對象重新簡化為 int。
封裝類的應用八個封裝類的使用比較相似,下面是常見的應用情境。1) 實現 int 和 Integer 的相互轉換可以通過 Integer 類的構造方法將 int 裝箱,通過 Integer 類的 intValue 方法將 Integer 拆箱。例如:
1 public class Demo { 2 public static void main(String[] args) { 3 int m = 500; 4 Integer obj = new Integer(m); // 手動裝箱 5 int n = obj.intValue(); // 手動拆箱 6 System.out.println("n = " + n); 7 8 Integer obj1 = new Integer(500); 9 System.out.println("obj 等價於 obj1?" + obj.equals(obj1));10 }11 }
運行結果:
n = 500
obj 等價於 obj1?true2) 將字串轉換為整數Integer 類有一個靜態 paseInt() 方法,可以將字串轉換為整數,文法為:
1 parseInt(String s, int radix);
s 為要轉換的字串,radix 為進位,可選,預設為十進位。
下面的代碼將會告訴你什麼樣的字串可以轉換為整數:
1 public class Demo { 2 public static void main(String[] args) { 3 String str[] = {"123", "123abc", "abc123", "abcxyz"}; 4 5 for(String str1 : str){ 6 try{ 7 int m = Integer.parseInt(str1, 10); 8 System.out.println(str1 + " 可以轉換為整數 " + m); 9 }catch(Exception e){10 System.out.println(str1 + " 無法轉換為整數");11 }12 }13 }14 }
運行結果:
123 可以轉換為整數 123
123abc 無法轉換為整數
abc123 無法轉換為整數
abcxyz 無法轉換為整數3) 將整數轉換為字串Integer 類有一個靜態 toString() 方法,可以將整數轉換為字串。例如:
1 public class Demo {2 public static void main(String[] args) {3 int m = 500;4 String s = Integer.toString(m);5 System.out.println("s = " + s);6 }7 }
運行結果:
s = 500自動拆箱和裝箱上面的例子都需要手動執行個體化一個封裝類,稱為手動拆箱裝箱。Java 1.5(5.0) 之前必須手動拆箱裝箱。
Java 1.5 之後可以自動拆箱裝箱,也就是在進行基礎資料型別 (Elementary Data Type)和對應的封裝類轉換時,系統將自動進行,這將大大方便程式員的代碼書寫。例如:
1 public class Demo { 2 public static void main(String[] args) { 3 int m = 500; 4 Integer obj = m; // 自動裝箱 5 int n = obj; // 自動拆箱 6 System.out.println("n = " + n); 7 8 Integer obj1 = 500; 9 System.out.println("obj 等價於 obj1?" + obj.equals(obj1));10 }11 }
運行結果:
n = 500
obj 等價於 obj1?true
自動拆箱裝箱是常用的一個功能,需要重點掌握。
系列文章:
Java知多少(1)語言概述
Java知多少(2)虛擬機器(JVM)以及跨平台原理
Java知多少(3) 就業方向
Java知多少(4)J2SE、J2EE、J2ME的區別
Java知多少(5) Java開發環境的搭建
Java知多少(6)第一個程式樣本
Java知多少(7)類與對象
Java知多少(8)類庫及其組織圖
Java知多少(9) import及Java類的搜尋路徑
Java知多少(10)資料類型及變數
Java知多少(11)資料類型轉換
Java知多少(12)運算子
Java知多少(13)流程式控制制
Java知多少(14)數組
Java知多少(15)字串
Java知多少(16)StringBuffer與StringBuider
Java知多少(17)強調一下編程風格
Java知多少(18)類的定義及其執行個體化
Java知多少(19)存取修飾詞(存取控制符)
Java知多少(20)變數的範圍
Java知多少(21)this關鍵字詳解
Java知多少(22)方法重載
Java知多少(23)類的基本運行順序
Java知多少(24)封裝類、拆箱和裝箱詳解
Java知多少(24)封裝類、拆箱和裝箱詳解