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).说明

    自动拆箱的规范格式为:赋值符号左边是基本数据类型的变量,右边是“对应”的封装类的对象;

 

posted @ 2017-02-23 23:13  旧城孤音  阅读(343)  评论(0编辑  收藏  举报