java自动拆装箱解释

版权声明:本文为博主原创文章,未经博主允许不得转载。讨论交流群:59116211 https://blog.csdn.net/hao474798383/article/details/70257898

拿int类型来举例,从1.5之后引入自动拆装箱

//exp
public static void demo(){
    Integer i = null;
    int j = i;//这里会报空指针异常
    System.out.print(j);
}

当把i的地址赋给基础类型的时候,虚拟机会自动拆箱i的值,直接写入到j的栈内存中,这时候调用拆箱方法>>>valueOf(),会引发nullpoint

从代码调试可以看出:装箱的过程为调用valueOf方法,在该方法中,首先判断值是否在常量池的表示范围,如果在,则返回常量池的对象 -128 ~ 127,如果不在,则new Integer();

拆箱的过程为:调用intValue方法,返回对象内存储的int值,注意,如果Integer的引用是null的话,拆箱的过程会引发nullpoint异常

在进行运算的时候,都为拆箱运算

拆箱和装箱都为虚拟机来进行操作

猜你喜欢

转载自blog.csdn.net/hao474798383/article/details/70257898
今日推荐