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。