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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张淼 中级黑马   /  2012-9-20 21:51  /  1599 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

编译并运行以下代码的输出结果是?
Integer ten = new Integer(10);
Long nine = new Long (9);
System.out.println(ten + nine);   //问题1:此句中含有两个包装类,句中不是会将其自动拆箱成int和long型数据么?
int i = 1;
System.out.println(i + ten);   //问题2:此句中只含有一个包装类,这句也是错误的么?
                                           //问题3:装箱和拆箱只有在赋值的时候才会进行么?
A19
       20
B19
      11
C、编译出错:不能对java.lang.Integer进行转换  //C项为正确答案。
D10
       1

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
首先值得一说的是自动装箱和拆箱是JDK1.5的新特性,只有在JDK1.5或以上环境上才可以进行操作,在此我用的是JDK1.6,所以没问题,答案是:B
问题1:句中的两个包装类会将ten和nine自动拆箱成int和long型数据,然后整型数据ten,会自动类型提升,结果为long类型的数据。
问题2:该句中的包装类的操作是正确的,当然是在JDK1.5或以上的环境上运行,首先ten会自动拆箱,然后与整型变量i相加,结果为int类型的数据
问题3:楼主的话,是不严谨的,装箱和拆箱在赋值的时候是可以进行的,当然其他的情况下也是可以的。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
要理解装箱和拆箱的概念,就要理解Java数据类型

装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质。int包装成Integer、float包装成Float

拆箱:和装箱相反,将引用类型的对象简化成值类型的数据

Integer a = 100;                  这是自动装箱  (编译器调用的是static Integer valueOf(int i))
int     b = new Integer(100); 这是自动拆箱

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

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