黑马程序员技术交流社区
标题:
问一道小小面试题
[打印本页]
作者:
许聪聪
时间:
2013-6-14 00:04
标题:
问一道小小面试题
Integer x = 4;
x = 4+3;
我知道4的类型是int的类型,但是Integer是int的包装类,所以上面的话会进行自动拆箱以及自动装箱
我的问题是,自动装箱的底层代码是怎样实现的呢?
作者:
神之梦
时间:
2013-6-14 00:48
Integer x = 4;
这是自动装箱,等效于:
Integer x=new Integer(4);这是装箱动作。
x = 4+3;
拆箱动作:x.intValue(),将4从包装类变为int类型,与3相加后又进行装箱动作。
作者:
x.love
时间:
2013-6-14 01:09
自动装箱:
public final class Integer extends Number implements Comparable<Integer> {
public static Integer valueOf(int i) {
if(i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
}
拆箱:
public final class Integer extends Number implements Comparable<Integer> {
private final int value;
public Integer(int value) {
this.value = value;
}
public int intValue() {
return value;
}
}
望采纳,在Integer类的源码中你会找到的
作者:
孙百鑫
时间:
2013-6-14 04:44
楼主您好!如果问题得到解决的话.请及时将主题改成已解决哦~~
在编辑里面.然后选择主题分类.
谢谢您的配合{:soso_e100:}
作者:
孔雀东南飞
时间:
2013-6-14 13:19
Integer x = 4;//Integer x = new Integer(4)
x = 4+3;//x=new Integer(4+3)
注意:x=4+3的话,4+3只是个表达式,运算完毕后,再封装。
你应该这样写:x=x+4,才能设计拆箱动作。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2