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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐进 中级黑马   /  2014-3-4 21:18  /  1406 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么时候是装箱 什么时候是装箱哦

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

4 个回复

倒序浏览
基本数据类型变成引用数据类型就是装箱
如Integer i = 5 ;
引用数据类型变成基本数据类型就是拆箱
如Integer i=1,j=2 ;
i+j 会自动拆箱进行计算

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
例如:Integer i = 100;

     编译器自动会作以下的语法编译:Integer i = new Integer(100);

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
JAVA程序中,对象之间是不可以用操作符直接操作的(String是个特例)。
即使是基本数据类型的封装类,在遇到运算符的时候,也要经历自动拆箱、装箱的过程。
比如:
  1. Integer i1 = 1;
  2. Integer i2 = 1;
  3. Integer i3 = i1 + i2;
复制代码

实际上就是i1和i2拆箱,加法运算后,重新再装箱成i3。

这只是简单的运算。在泛型出现后,也有这种情况。
比如:
  1. int a = 1;
  2. List<Integer> list = new ArrayList<Integer>();
  3. list.add(a);
复制代码

这个就是a装箱后,加入到list中的例子。

评分

参与人数 1技术分 +2 收起 理由
朱神必 + 2

查看全部评分

回复 使用道具 举报
我们知道Java语言它是在5.0版本以后提供了自动装箱和自动拆箱的功能,也就是基本数据类型和包装类型数据之间可以自动进行转换,这样就无需使用包装类。如:
  1. int m=10;
  2. Integer n=new Integer(100);
  3. n=m;  //自动装箱
  4. m=n; //自动拆箱
复制代码

又如下面这段代码:
  1. Integer x=3;//第1句
  2. x=x+5;//第2句
复制代码

第一句中的3就是一个对象,它相当于new Integer(3);也就是自动装箱的操作;第二句是首先对x自动拆箱,变成int类型的数据(相当于x.intValue()),然后加法运算,最后又将这个加法的结果进行装箱赋给了x。
具体的说什么时候使用它们,这就要视具体情况而定了,如果你想以对象的方式来操作基本类型的数据的话,
这就会涉及到装箱的动作,但这都是由Java自动完成的功能。

评分

参与人数 1技术分 +2 收起 理由
朱神必 + 2

查看全部评分

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