A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Cola 于 2014-1-27 09:32 编辑

请问怎么理解自动装箱与拆箱呢?int[]为什么不能自动装箱呢?

5 个回复

正序浏览
基本类型boolean,char,double,float,byte,short,int,long
包装类类型Boolean,Character,Double,Float,Byte,Short,Integer,Long
将基本类型值转换为包装类对象的过程称为装箱,相反的过程称为开箱;
如果一个基本类型值出现在需要对象的环境中,编译器会将基本类型值进行自动装箱;如果一个对象出现在需要基本类型值的环境中,编译器将对对象进行自动开箱。如:
Integer[] intArray = {1, 2, 3};基本数据类型值1、2、3被自动装箱成对象new Integer(1)、new Integer(2)、new Integer(3)。
System.out.println(intArray[0] + intArray[1] + intArray[2]);对象intArray[0]、intArray[1]、intArray[2]被自动转换(开箱)为int值然后进行相加。
in[]是不能自动装箱的,只能是int[]中的int类型元素可以,要装箱就只能一个个的装箱了......

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
自动拆装箱是:关于基本数据类型和数据包装类型的转换。举例:自动装箱:包装类的引用指向基本数据类型。eg:Integer i = 5; 内部的实现过程是:Integer i  = Integer.valueOf(5);    自动拆箱:就是基本数据类型引用,指向包装类型引用, Integer j = new Integer(5); int  k = j;内部的实现过程,int k =j.intValue(); 自动拆装箱是jdk1.5提供的新特性。方便使用。int【】已经定义为数据类型为基本数据类型,就只存基本类型。如果是Integer【】 ,而里面存储的是 1,3,5 等基本类型,就是自动装箱动作。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
装箱时将基本数据类型转换成基本数据类型的包装类类型,拆箱是将基本类型包装类转成基本类型
int[] 是数组,是一个对象,不能转换成Integer[]数组.
列如 Integer i = 1; // 自动装箱 将1装换成包装类型Integer
       int j = i + 1; // 自动拆箱 Integer类型装换成基本类型后再执行算术运算

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
自动装箱:也就是把基本类型直接赋值给引用类型。
  自动拆箱:也就是把引用类型直接拆成基本类型。
而数组不是基本类型,是存储同一种类型的多个元素的容器。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
楼主您好,
我的理解:自动装箱是把基本类型的数据自动转换成类类型的数据,自动拆箱就是把类类型的数据自动转换成基本数据类型的数据。
        int[]不能自动装箱是因为它是装载基本数据类型的数组,里面只能存放基本数据类型的数据,不能存放类类型的数据。
        希望可以帮到楼主,有说的不对的,再交流!

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马