自动拆箱底层调用包装类的xxxValue()方法,是编译期语法糖;Integer→intValue()、Double→doubleValue()等,null拆箱会触发NullPointerException。

Java中自动拆箱底层调用的是包装类对应的 xxxValue() 方法。
不同包装类对应的具体方法
每种基本类型包装类都提供一个返回其内部基本值的方法,编译器在自动拆箱时会直接插入该方法调用:
-
Integer → int:调用
intValue() -
Double → double:调用
doubleValue() -
Boolean → boolean:调用
booleanValue() -
Character → char:调用
charValue() -
Long → long:调用
longValue() - 其余如
shortValue()、byteValue()同理
这是编译期行为,不是JVM运行时特性
自动拆箱不依赖JVM新增指令,而是由Java编译器(如javac)在编译阶段完成的语法糖转换。例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
Integer i = 100;<br>int n = i;
编译后等效为:
Integer i = Integer.valueOf(100);<br>int n = i.intValue();
一个关键风险:null 拆箱会抛出 NullPointerException
因为拆箱本质是方法调用,如果包装类引用为 null,执行 i.intValue() 就会触发NPE:
立即学习“Java免费学习笔记(深入)”;
Integer i = null;int n = i; // 运行时报 NullPointerException
这个异常发生在运行时,但根源是编译器生成了对 null 引用的方法调用。

















