## Java編程那些事兒77——包裝類
陳躍峰
出自:[http://blog.csdn.net/mailbomb](http://blog.csdn.net/mailbomb)
### 9.5.5 包裝類
Java語言是一個面向對象的語言,但是Java中的基本數據類型卻是不面向對象的,這在實際使用時存在很多的不便,為了解決這個不足,在設計類時為每個基本數據類型設計了一個對應的類進行代表,這樣八個和基本數據類型對應的類統稱為包裝類(Wrapper Class),有些地方也翻譯為外覆類或數據類型類。
包裝類均位于java.lang包,包裝類和基本數據類型的對應關系如下表所示:
包裝類對應表
<table class="MsoNormalTable" style="margin: auto auto auto 55.05pt; border-collapse: collapse; mso-border-alt: solid black .5pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid black; mso-border-insidev: .5pt solid black;" border="1" cellspacing="0" cellpadding="0"><tbody><tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;"><td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 106.3pt; padding-top: 0cm; background-color: transparent; mso-border-alt: solid black .5pt; border: black 1pt solid;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="font-family: 宋體; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-size: small;">基本數據類型</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="font-family: 宋體; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-size: small;">包裝類</span></span></p></td></tr><tr style="mso-yfti-irow: 1;"><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 106.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">byte</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">Byte</span></span></p></td></tr><tr style="mso-yfti-irow: 2;"><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 106.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">boolean</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">Boolean</span></span></p></td></tr><tr style="mso-yfti-irow: 3;"><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 106.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">short</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">Short</span></span></p></td></tr><tr style="mso-yfti-irow: 4;"><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 106.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">char</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">Character</span></span></p></td></tr><tr style="mso-yfti-irow: 5;"><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 106.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">int</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">Integer</span></span></p></td></tr><tr style="mso-yfti-irow: 6;"><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 106.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">long</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">Long</span></span></p></td></tr><tr style="mso-yfti-irow: 7;"><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 106.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">float</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">Float</span></span></p></td></tr><tr style="mso-yfti-irow: 8; mso-yfti-lastrow: yes;"><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 106.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="142" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">double</span></span></p></td><td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 120.5pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt;" width="161" valign="top"><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span lang="EN-US"><span style="font-size: small; font-family: Calibri;">Double</span></span></p></td></tr></tbody></table>
在這八個類名中,除了Integer和Character類以后,其它六個類的類名和基本數據類型一直,只是類名的第一個字母大寫即可。
對于包裝類說,這些類的用途主要包含兩種:
a、作為和基本數據類型對應的類類型存在,方便涉及到對象的操作。
b、包含每種基本數據類型的相關屬性如最大值、最小值等,以及相關的操作方法。
由于八個包裝類的使用比較類似,下面以最常用的Integer類為例子介紹包裝類的實際使用。
1、實現int和Integer類之間的轉換
在實際轉換時,使用Integer類的構造方法和Integer類內部的intValue方法實現這些類型之間的相互轉換,實現的代碼如下:
~~~
?????????????????? int n = 10;
?????????????????? Integer in = new Integer(100);
?????????????????? //將int類型轉換為Integer類型
?????????????????? Integer in1 = new Integer(n);
?????????????????? //將Integer類型的對象轉換為int類型
?????????????????? int m = in.intValue();
~~~
2、Integer類內部的常用方法
在Integer類內部包含了一些和int操作有關的方法,下面介紹一些比較常用的方法:
a、parseInt方法
public static int parseInt(String s)
該方法的作用是將數字字符串轉換為int數值。在以后的界面編程中,將字符串轉換為對應的int數字是一種比較常見的操作。使用示例如下:
???????????????????????????????????? String s = “123”;
???????????????????????????????????? int n = Integer.parseInt(s);
則int變量n的值是123,該方法實際上實現了字符串和int之間的轉換,如果字符串都包含的不是都是數字字符,則程序執行將出現異常。(說明:異常的概念將在下一章進行講述)
另外一個parseInt方法:
public static int parseInt(String s, int radix)
則實現將字符串按照參數radix指定的進制轉換為int,使用示例如下:
???????? //將字符串”120”按照十進制轉換為int,則結果為120
???????? int n = Integer.parseInt(“120”,10);
???????? //將字符串”12”按照十六進制轉換為int,則結果為18
???????? int n = Integer.parseInt(“12”,16);
???????? //將字符串”ff”按照十六進制轉換為int,則結果為255
???????? int n = Integer.parseInt(“ff”,16);
這樣可以實現更靈活的轉換。
b、toString方法
public static String toString(int i)
該方法的作用是將int類型轉換為對應的String類型。
使用示例代碼如下:
int m = 1000;
String s = Integer.toString(m);
則字符串s的值是”1000”。
另外一個toString方法則實現將int值轉換為特定進制的字符串:
public static int parseInt(String s, int radix)
使用示例代碼如下:
int m = 20;
String s = Integer.toString(m);
則字符串s的值是”14”。
其實,JDK自從1.5(5.0)版本以后,就引入了自動拆裝箱的語法,也就是在進行基本數據類型和對應的包裝類轉換時,系統將自動進行,這將大大方便程序員的代碼書寫。使用示例代碼如下:
~~~
?????????????????? //int類型會自動轉換為Integer類型
?????????????????? int m = 12;
?????????????????? Integer in = m;
?????????????????? //Integer類型會自動轉換為int類型
?????????????????? int n = in;
~~~
所以在實際使用時的類型轉換將變得很簡單,系統將自動實現對應的轉換。
- 前言
- (1)序言
- (2)程序設計是什么?
- (3)你適合學習程序設計嗎?
- (4)如何學好程序設計?
- (5)程序設計介紹小結
- (6)計算機軟件基本概念
- (7)進制的概念
- (8)計算機內部的數據表達
- (9)網絡編程基礎
- (10)Java語言簡介
- (11)JDK的獲得、安裝和配置
- (12)第一個HelloWorld程序
- (13)Eclipse基本使用
- (14)Eclipse基礎使用進階
- (15)如何學好Java語法
- (16)代碼框架、關鍵字和標識符
- (17)基本數據類型
- (18)變量和常量
- (19)數據類型轉換
- (20)空白、語句結束和注釋
- (21)算術運算符
- (22)比較運算符
- (23)邏輯運算符
- (24)賦值運算符
- (25)位運算符
- (26)移位運算符
- (27)其它運算符
- (28)運算符優先級
- (29)表達式
- (30)流程控制基礎
- (31)if語句語法(1)
- (32)if語句語法(2)
- (33)if語句語法(3)
- (34)switch語句語法
- (35)while語句語法
- (36)do-while語句語法
- (37)for語句語法
- (38)break和continue語句
- (39)流程控制綜合示例1
- (40)流程控制綜合示例2
- (41)流程控制綜合示例3
- (42)流程控制綜合練習
- (43)數組概述
- (44)數組基礎語法
- (45)數組使用示例1
- (46)數組使用示例2
- (47)數組使用示例3
- (48)多維數組基礎
- (49)多維數組使用示例1
- (50)多維數組使用示例2
- (51)多維數組練習
- (52)方法聲明
- (53)方法聲明示例
- (54)方法調用
- (55)方法重載和參數傳遞
- (56)方法練習
- (57)面向對象基礎
- (58)類(一)
- (59)類(二)
- (60)對象
- (61)面向對象設計方法和面向對象特性(一)
- (62)繼承(二)
- (63)多態性
- (64)訪問控制符、修飾符和其它關鍵字
- (65)static修飾符
- (66)final修飾符
- (67)this和super
- (68)抽象類和接口(一)
- (69)抽象類和接口(二)
- (70)抽象類和接口(三)
- (71)內部類簡介
- (72)包的概念
- (73)JDK文檔使用
- (74)java.lang包介紹1
- (75)String類使用
- (76)StringBuffer類和System類
- (77)包裝類
- (78)時間和日期處理
- (79)Random隨機處理
- (80)集合框架簡述
- (81)異常處理概述
- (82)異常處理語法1
- (83)異常處理語法2
- (84)IO簡介
- (85)IO類體系
- (86)文件操作之File類使用
- (87)文件操作之讀取文件
- (88)文件操作之寫文件
- (89)讀取控制臺輸入
- (90)裝飾流使用1
- (91)裝飾流使用2
- (92)IO使用注意問題
- (93)多線程基礎
- (94)多線程實現方式1
- (95)多線程實現方式2
- (96)多線程使用示例1
- (97)多線程使用示例2
- (98)多線程問題及處理1
- (99)多線程問題及處理2
- (100)多線程問題及處理3
- (101)網絡編程概述
- (102)網絡編程技術1
- (103)網絡編程技術2
- (104)網絡編程技術3
- (105)網絡編程技術4
- (106)網絡編程技術5
- (107)網絡協議概念
- (108)網絡編程示例1
- (109)網絡編程示例2
- (110)網絡編程小結