天天看點

Java三大特殊類之----包裝類1. 基本原理2. 裝箱與拆箱 3. 字元串與基本資料類型轉換

包裝類

1. 基本原理

Object類能接收所有的引用類型,那麼基本資料類型由誰接收呢?那就是包裝類

包裝類就是将基本資料類型封裝到類中

自己定義一個包裝類

class IntDemo{
   private int num;
public IntDemo(int num){
   this.num=num;
}
public int intValue(){
   return this.num;
  }
}
           

 IntDemo實際上就是int資料類型的包裝類,利用IntValue就可以實作基本資料類型變為對象的需求

IntDemo的使用

public static void main(String[] args){
      //子類對象向上轉型
      Object obj = new IntDemo(55);
      IntDemo temp = (IntDemo)obj;//向下轉型
      System.out.println(temp.intValue());//取出裡面的資料類型操作
  }
           

 結論:将基本資料類型包裝為一個類對象的本質就是使用Object進行接收處理

Java中有八種基本資料類型,如果每個都按照上面的方式寫,就會造成大量的代碼重複問題,是以為了友善開發,專門提供了包裝類的使用,提供了兩種類型:

  • 對象型(Object的直接子類):Boolean,Character(char);
  • 數值型(Number的直接子類):Byte,Double,Short,Long,Integer(int),Float;

2. 裝箱與拆箱

在包裝類與基本資料類型進行中存在兩個概念:

  • 裝箱:将基本資料類型變為包裝類對象,利用每一個包裝類提供的構造方法實作裝箱處理
  • 拆箱:将包裝類的基本資料類型取出 

以int和integer舉例

Integer num = new Integer(55) ; // 裝箱
int data = num.intValue() ; // 拆箱
System.out.println(data);
           

 以上操作采用的是手工的裝箱和拆箱

自動裝箱與拆箱處理

// 自動裝箱
Integer x = 55 ;
// 可以直接利用包裝類對象操作
System.out.println(++x * 5 );
           

 這個時候依然存在有"==" 和 "equals" 問題

觀察問題

Integer num1 = new Integer(10) ;
Integer num2 = new Integer(10) ;
System.out.println(num1 == num2);
System.out.println(num1 == new Integer(10));
System.out.println(num1.equals(new Integer(10)));
           

 3. 字元串與基本資料類型轉換

以後要進行各種資料的輸入,一定都是字元串類型的接收。是以在開發之中,如何将字元串變為各個資料類型,這

個時候就需要包裝類支援。

  1. String變為int 類型(Integer類):public static int parseInt(String s) throws

    NumberFormatException

  2. String變為double類型(Double類):public static double parseDouble(String s) throws

    NumberFormatException

  3.  String變為Boolean類型(Boolean類):public static boolean parseBoolean(String s)

将字元串變為int類型 

String str = "123" ; // String類型
int num = Integer.parseInt(str) ;
System.out.println(num);
           

 将字元串變為Double

String str = "123" ; // String類型
double num = Double.parseDouble(str) ;
System.out.println(num);
           

 需要注意的是,将字元串轉為數字的時候,字元串的組成有非數字,那麼轉換就會出現錯誤

(NumberFormatException)

那麼如果現在要将基本資料類型變為字元串,應該怎麼做?

  1. 任何資料類型使用了"+"連接配接空白字元串就變為了字元串類型。
  2. 任何資料類型使用了"+"連接配接空白字元串就變為了字元串類型。

繼續閱讀