Java自动装箱和拆箱
jdk5.0之后,在基本数据类型封装类之间增加了自动装箱和拆箱的功能,其实“自动”的实现很简单,只是将装箱和拆箱通过编译器,进行了“自动补全”,省去了开发者的手动操作。
而进行封装类与对应基本数据类型之间的转换,原因很简单:
基本类型转换为引用类型后,就可以new对象,从而调用包装类中封装好的方法进行基本类型之间的转换或者toString(当然用类名直接调用也可以,便于一眼看出该方法是静态的),还有就是如果集合中想存放基本类型,泛型的限定类型只能是对应的包装类型。
1.自动装箱
a).基本实现
1 public class Test { 2 public static void main(String[] args) { 3 // jdk5.0之前创建对象的例子. 4 Integer a = new Integer(1000); 5 // jdk5.0以后,自动装箱,当赋值符号左边是封装类引用,右边是"对应"的基本数据类型值时, 6 // 编译器将右边数值自动装箱,变成new Integer(1000); 7 Integer b = 1000; 8 9 //Long类型自动装箱 10 /* 11 * 无效的代码,编译不通过,赋值符号右边应该是longl类型的值 12 * Long c = 1000; 13 * */ 14 Long c = 1000L;//正确的姿势 15 16 } 17 }
b).说明
自动装箱的规范格式为:赋值符号左边是封装类的引用,右边是“对应”的基本数据类型数值;
2.自动拆箱
a).基本实现
1 public class Test { 2 public static void main(String[] args) { 3 Integer a = new Integer(1000); 4 // 自动拆箱,当赋值符号左边是基本数据类型变量,右边是"对应"封装类对象时, 5 // 编译器将右边对象拆箱,变成a.intValue() 6 int b = a; 7 double c = new Double(1000); 8 } 9 }
b).说明
自动拆箱的规范格式为:赋值符号左边是基本数据类型的变量,右边是“对应”的封装类的对象;