天天看点

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。