包裝類

在開發過程當中,有不少的方法接收的參數都是引用類型的對象,此時就沒法將一個基本數據類型的數據傳入。這是就須要經過包裝類將基本數據類型的值包裝爲引用類型的對象。下表列出了每種基本數據類型對應的包裝類:java

基本數據類型 對應的包裝類
byte Byte
char Charactter
int  Integer
short Short
long Long
float Float
double Double
boolean Boolean

 

 

 

 

 

 

 

包裝類和基本數據類型在進行轉換時,引入了裝箱和拆箱的概念。其中,裝箱是指將基本數據類型的值轉爲引用數據類型,反之,拆箱是指將引用數據類型的對象轉爲基本數據類型。spa

Example01.javacode

public class Example01 {
    public static void main(String[] args) {
        int a = 20;
        Integer in = new Integer(a);
        System.out.println(in.toString());
    }
}

 

運行結果以下:對象

上面的例子演示了包裝類Integer的裝箱過程,在建立Integer對象時,將int類型的變量a做爲參數傳入,從而轉爲Integer類型。同時,因爲Object類是全部類的父類,所以能夠經過調用toString()方法將Integer的值以字符串的形式打印出來。此處的toString()方法也能夠省略。blog

Integer類除了具備Object類的全部方法以外,還有一些特有的方法。開發

方法聲明 功能描述
static String toBinaryString(int i) 以二進制無符號整數形式返回一個整數參數的字符串
static String toHexString(int i) 以十六進制無符號整數形式返回一個整數參數的字符串
static String toOctalSring(int i) 以八進制無符號整數形式返回一個整數參數的字符串
static Integer valueOf(int i) 返回一個表示指定的int值的Integer實例
static Integer valueOf(String s) 返回保存指定的String的值的integer對象
static int parseInt(String s) 將字符串參數做爲有符號的十進制整數進行解析
intValue() 將Integer類型的值以int類型返回

 

 

 

 

 

 

Example02.java字符串

1 public class Example02 {
2     public static void main(String[] args) {
3         Integer num = new Integer(20);
4         int a = 10;
5         int sum = num.intValue() + a;
6         System.out.println("sum=" + sum);
7     }
8 }

 

運行結果以下:數學

 上面的例子演示了拆箱的過程,Integer對象經過調用intValue()方法,將Integer對象轉爲int類型,從而能夠與int類型的變量a進行加法運算,最終得出運算結果。編譯

上面列表中的parseInt()方法在程序中很經常使用,它是一個靜態方法,用於將一個字符串形式的數值轉成int類型。table

 在使用包裝類時,須要注意如下幾點:

  • 包裝類都重寫了Object類的toString()方法,以字符串的形式返回被包裝的基本數據類型的值。
  • 除了Character外,包裝類都有valueOf(String s)方法,能夠根據String類型的參數建立包裝類對象,但參數字符串s不能爲null,並且字符串必須是能夠解析爲相應基本類型的數據,不然雖然編譯經過,但運行時會報錯,以下:
1 Integer i = Integer.valueOf("123");//合法
2 Integer i = Integer.valueOf("12a");//不合法
  • 除了Character外,包裝類都有parseXxx(String s)的靜態方法,將字符串轉換爲對應的基本類型的數據。參數s不能爲null,並且一樣必須是能夠解析爲相應基本類型的數據,不然雖然編譯經過,但運行會報錯,以下:
    1 int i = Integer.parseInt("123");//合法
    2 Integer in = Integer.parseInt("12a");//不合法

JDK5.0新特性---自動拆箱和自動裝箱

在JDK5.0以前,數學運算表達式中的操做數必須是基本類型的,而且運行結果也是基本類型,包裝類和基本類型是不容許進行混合數學運算的,若是想運算,必需要經過拆箱將包裝類對象轉爲基本數據類型的值才行。

相關文章
相關標籤/搜索