黑马程序员技术交流社区

标题: 问一道小小面试题 [打印本页]

作者: 许聪聪    时间: 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