天天看點

java自動裝箱和拆箱

Java語言是一個面向對象的語言,但是Java中的基本資料類型卻是不面向對象的,這在實際使用時存在很多的不便,為了解決這個不足,在設計類時為每個基本資料類型設計了一個對應的類進行代表,這樣八個和基本資料類型對應的類統稱為包裝類(Wrapper Class),有些地方也翻譯為外覆類或資料類型類。 

         包裝類均位于java.lang包,包裝類和基本資料類型的對應關系如下表所示:

包裝類對應表

基本資料類型

 包裝類

byte

 Byte

boolean

 Boolean

short

 Short

char

 Character

int

 Integer

long

 Long

float

 Float

double

 Double

         在這八個類名中,除了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;

         是以在實際使用時的類型轉換将變得很簡單,系統将自動實作對應的轉換。