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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闫玉泉 黑马帝   /  2012-1-27 15:13  /  2701 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题目,请问为什么要装箱和拆箱,基本类型也要吗?

8 个回复

倒序浏览
自动装箱和拆箱的功能是为了提高程序开发效率
装箱是把基本类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double, 拆箱是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。
举个简单例子:
自动装箱:
int data = 10;
Integer integer = data;
当然你也可以这样写:Integer integer = 10;
自动拆箱:
int i = integer;
基本数据类型当然可以用这些功能了
另外,自动装箱、拆箱的功能是由编译器提供,它提供了方便性,但隐藏了一些细节,所以使用的时候必须要小心

评分

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

查看全部评分

回复 使用道具 举报
装箱拆箱就是对基本数据类型而言的,对引用类型没有这一说法。
回复 使用道具 举报
装箱和拆箱,就是自动进行类型转换。至于为何要进行类型转换,类型不匹配时,就要类型转换呗。
如a 是ArrayList,现在可这样:a.add(3);
以前不会装箱和拆箱,要如此:a.add((Integer)11);

评分

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

查看全部评分

回复 使用道具 举报
郭繁森 来自手机 黑马帝 2012-1-27 19:27:14
报纸
活跃奖励

评分

参与人数 1黑马币 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
{:soso__186724445477376410_2:}
回复 使用道具 举报
任奇 黑马帝 2012-1-27 20:14:20
7#
为什么需要装箱:对于引用类型赋给Object没问题,都是引用类型,只是一个引用的赋值,但是值类型赋给Object就有问题了,因为值类型没有引用,为了造出一个引用,也就有了装箱。
为什么需要拆箱:就是将从对象中提取值类型。
String i=“1”;
object s=i;     //装箱
int j=(int)i;     //拆箱
拆箱要小心转换。

新年哈皮!

评分

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

查看全部评分

回复 使用道具 举报
逄焕玮 黑马帝 2012-1-28 00:34:24
8#
为什么要装箱和拆箱,基本类型也要吗?

这个就是基本数据类型对象包装类的一个新特性,是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先自动拆箱,运算结束后再装箱,极大的简化了书写

评分

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

查看全部评分

回复 使用道具 举报
装箱是将值类型转换为值类型,拆箱就是将己转换为引用类型的值类型转换回来
装箱 :int i=10;
object o=i;
拆箱:int j=(int)o;

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

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

评分

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

查看全部评分

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