雖然Java語言時典型的面向對象編程(OOP),但其中的八種基本數據並不支持面向對象編程,比如int,double,char等基本數據,基本數據類型不具備“對象”的特性——不攜帶屬性、沒有方法可以調用。而使用這些基本數據類型只是爲了迎合人類根深蒂固的習慣,畢竟很多人都是先學了面向過程編程的C語言,然後才學Java語言(話說我自己當初就是學了C,再緊跟着學了Java),並且的確能夠有效的、簡單的進行常規數據處理。
而很多情況下,這種非面向對象技術的做法很帶來很多不便,比如引用了類型數據均繼承了Object類的特性,爲解決一些不便問題,Java爲每種基本數據類型分別設計了對應的類,稱爲包裝類。
基本數據類型 | 對應的包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
每個包裝類的對象可以封裝成一個對應的基本類型的數據,並提供了其他一些很有用的方法,比如類型轉換。
基本數據類型和與之對應的包裝類可以相互轉換:
- 由基本類型向對應的包裝類轉換稱之爲裝箱,例如把int包裝成Integer類的對象。
- 包裝類向對應的基本數據類型轉換稱之爲拆箱,例如把Integer類的對象重新簡化爲int。
包裝類的應用
類型轉換
Integer類有一個靜態的paseInt()方法,可以將字符串轉換爲整數,語法爲:
parseInt(String s, int radix);
s爲要轉換的字符串,radix爲進制,可選,默認爲十進制。
包裝類對象可以爲null
在實際開發中,有些時候,方法傳進去的int類型的參數可能爲null,這時候我們就用到了包裝類Integer,而不能使用基本數據類型int。
簡化了很多方法
比如Integer類中就有很多的進制轉換,我們只需要一條語句就能把一個10進制的數轉換爲2進制。
int num=255;
System.out.println(Integer.toBinaryString(num));//把int類型的num轉換成2進制數
System.out.println(Integer.toOctalString(num));//把int類型的num轉換成8進制數
System.out.println(Integer.toHexString(num));//把int類型的num轉換成16進制數
自動拆箱和裝箱
在Java1.5之前,需要手動new一個包裝類,稱爲手動拆箱裝箱,而在Java1.5之後,可以自動拆箱裝箱,也就是在進行基本數據類型和對應的包裝類轉換時,系統將自動進行。例如:
int m = 500;
Integer obj = m; // 自動裝箱
int n = obj; // 自動拆箱