为什么要对基本数据类型进行包装?
/*
1、java中8种基本数据类型有对应准备了8种包类型。8中包类型属于引用数据类型,父类是Object
2、为什么要提供8种包类型呢?
有的方法传参需要不同类型,我们需要进行基本数据的转换
因为8种基本数据类型不够用
所以sun公司又提供了8种包装类型。
*/
/*
我们手动建立一个类来修改基本数据类型
我们建的类叫做MyInt
*/
public class IntegerTest01 {
public static void main(String[] args) {
//存在这样的需求:调用doSome()方法的时候需要传一个数字进去。
// 但是数组属于基本数据类型,而doSome方法参数的类型是Object
//可见doSome方法无法接受基本数据类型,怎么办?
//可以传一个数字对应的包装类进去
//把100这个数字经过构造方法包装成对象。
MyInt myInt = new MyInt(100);
doSome(myInt);
//100
}
public static void doSome(Object obj){
System.out.println(obj.toString());
}
}
public class MyInt {
int value;
public MyInt() {
}
public MyInt(int value) {
this.value = value;
}
public String toString(){
return String.valueOf(value);
//自动转换字符串
}
}
装箱和拆箱
/*
1、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)
2、以上8种包装类型类中,重点以java.lang.Integer为代表进行学习,其他照着学习
3、八种包装类中其中6个都是数字对应的包装类,他们的父亲都是Number,可以先研究一下Number中公共的方法:
byte byteValue()以byte形式返回指定的数值
abstract double doubleValue()以double形式返回指定的数值
abstract float floatValue()以float形式返回指定的数值
abstract int intValue()以int形式返回指定的数值
abstract long longValue()以long形式返回指定的数值
short shortValue()以short形式返回指定的数值
这些方法其实所有的数字包装类的子类都有,这些方法是负责拆箱的。
*/
public class IntegerTest02 {
public static void main(String[] args) {
//将123这个基本数据类型,进行构造方法的包装达到了,基本数据类型向引用数据类型的转换
//基本数据类型--->引用数据类型(装箱)
Integer i = new Integer(123);
//将以后引用数据类型--->基本数据类型
float f = i.floatValue();
System.out.println(f);//123.0
//将引用数据类型--->基本数据类型(拆箱)
int retValue = i.intValue();
System.out.println(retValue);//123
}
}