包装类
java对于8个基本类型分别定义了对应的包装类,而包装类出现的原因是为了解决基本类型不能参与面向对象的开发问题。
java的8个基本类型:byte,short,int,long,float,double,char,boolean是以值的形式直接存在的,所以他们并没有面向对象的特性,自然也不继承Object.所以不能使用多态,用Object的角度去接受基本类型。
数字类型的包装类继承自Number,其提供了如:intValue,doubleValue这样的方法,作用是可以将当前包装类表示的数字以其他数字类型的形式返回。
包装类提供了一个静态方法parseXXX(String str),可以将给定的字符串转换为对应的基本类型。前提是该字符串必须正确的描述基本类型可以保存的值。
自动拆装箱
自动拆装箱是编译器认可,而不是虚拟机认可。
编译器再将源程序编译时自动补充代码来完成基本类型与包装类之间的转换。
eg:
/*
* 下面代码触发了自动装箱:
* 在class文件中,下面的代码被编译器改为:
* int i = new Integer(1).intValue();
*/
int i = new Integer(1);
/*
* 下面代码触发了自动装箱:
* 在class文件中,下面代码被编译器改为:
* Integer ii = Integer.valueOf(123);
*/
Integer ii = 123;