天天看點

Java中為什麼要引入包裝類?

Java中為什麼要引入包裝類?

java中為8種基本資料類型又對應的準備了8種包裝類

包裝類是引用資料類型,父類是Object。

思考:為什麼要再提供8中包裝類呢?

假設有這樣一個方法:它的形式參數是Object型

它能接收所有引用資料類型,因為Object類是所有類的父類,不能接受基本資料類型。

如果我想傳一個int型數字進去,該怎麼解決?

看下面一個例子:

測試代碼:

public class Test01 {

    //形式參數隻接受引用類型
    public static void superPrint(Object obj) {
        System.out.println(obj.toString());
    }

    public static void main(String[] args) {
        int i = 100;
        //首先,你得把這個數字進行包裝,讓一個類帶着它傳進方法裡面

        //執行個體化一個包裝類,儲存i的值
        MyInt myInt = new MyInt(i);

        Test01.superPrint(myInt);
    }
}

//自己寫一個包裝類,儲存int數字的類
class MyInt {
    //儲存數的值
    private int value;

    //setter and getter
    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    //構造方法
    public MyInt() {

    }

    public MyInt(int value) {
        this.value = value;
    }

    //重寫toString()方法
    @Override
    public String toString() {
        return "int型:" + String.valueOf(value);
    }
}
           

這種包裝類是自己寫的

以後都不需要寫,因為SUN公司已經提供了8種包裝類

可以把8種基本資料類型 包裝成 引用資料類型。

基本資料類型--------包裝類型------------------父類

byte--------------------java.lang.Byte-----------Number

short-------------------java.lang.Short----------Number

int-----------------------java.lang.Integer-------Number

long--------------------java.lang.Long----------Number

float--------------------java.lang.Float----------Number

double-----------------java.lang.Double-------Number

boolean---------------java.lang.Boolean------Object

char--------------------java.lang.Character----Object

8種包裝類名也好記

int的包裝類是Integer

char的包裝類是Character

其他的都是首字母大寫變成類名

數字包裝類的父類是Number。

Boolean和Character的父類是Object。