黑马程序员技术交流社区

标题: 关于装箱和拆箱的问题 [打印本页]

作者: 闫玉泉    时间: 2012-1-27 15:13
标题: 关于装箱和拆箱的问题
如题目,请问为什么要装箱和拆箱,基本类型也要吗?

作者: 尹旗龙    时间: 2012-1-27 15:48
自动装箱和拆箱的功能是为了提高程序开发效率
装箱是把基本类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double, 拆箱是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。
举个简单例子:
自动装箱:
int data = 10;
Integer integer = data;
当然你也可以这样写:Integer integer = 10;
自动拆箱:
int i = integer;
基本数据类型当然可以用这些功能了
另外,自动装箱、拆箱的功能是由编译器提供,它提供了方便性,但隐藏了一些细节,所以使用的时候必须要小心
作者: 最初的理想    时间: 2012-1-27 16:24
装箱拆箱就是对基本数据类型而言的,对引用类型没有这一说法。
作者: 黄秋    时间: 2012-1-27 17:47
装箱和拆箱,就是自动进行类型转换。至于为何要进行类型转换,类型不匹配时,就要类型转换呗。
如a 是ArrayList,现在可这样:a.add(3);
以前不会装箱和拆箱,要如此:a.add((Integer)11);
作者: 郭繁森    时间: 2012-1-27 19:27
活跃奖励
作者: 房宝彬    时间: 2012-1-27 19:40
{:soso__186724445477376410_2:}
作者: 任奇    时间: 2012-1-27 20:14
为什么需要装箱:对于引用类型赋给Object没问题,都是引用类型,只是一个引用的赋值,但是值类型赋给Object就有问题了,因为值类型没有引用,为了造出一个引用,也就有了装箱。
为什么需要拆箱:就是将从对象中提取值类型。
String i=“1”;
object s=i;     //装箱
int j=(int)i;     //拆箱
拆箱要小心转换。

新年哈皮!
作者: 逄焕玮    时间: 2012-1-28 00:34
为什么要装箱和拆箱,基本类型也要吗?

这个就是基本数据类型对象包装类的一个新特性,是JDK1.5新增的特性
至于为什么,JAVA升级有三因素,①提高效率②简化书写③提高安全性,自动装箱拆箱就是为了简化书写的
Integer  a = new Integer(4); //1.5之前是需要这么写的,或者是用另一个构造方法 Integer(String s),传一个 "4"
Integer  a = 4; //自动装箱,此处的 4 就等同于上一句中的new Integer(4),很大程度上的简化了书写

a = a + 5; //此处a是一个基本类型包装类的对象,可以直接跟int类型的5进行加法运算,a先自动拆箱,运算结束后再装箱,极大的简化了书写

作者: 苏格拉底的弟子    时间: 2012-1-30 22:30
装箱是将值类型转换为值类型,拆箱就是将己转换为引用类型的值类型转换回来
装箱 :int i=10;
object o=i;
拆箱:int j=(int)o;

而且装修拆箱就是相对于基本数据类型而言的,引用数据类型没有装箱的概念,
装箱拆箱是JDK1.5后的新特性  也是为了方便操作的,简化了书写。

另外我们把基本数据类型装箱成类后,里面提供了很多方法来攻我们使用,这样来是不是很方便呢?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2