正解:这是Java的自动装箱(autoboxing)与自动拆箱(autounboxing)。
Boxing的定义:
Chapter 5. Conversions and Contexts, 5.1.7. Boxing Conversion
Unboxing的定义:
Chapter 5. Conversions and Contexts, 5.1.8. Unboxing Conversion
Java以“语法糖”来实现自动装箱与拆箱——这纯粹由Java语言编译器(例如javac)实现。
当javac发现在一个需要Object、Number、Integer的上下文里出现了int类型的值,就会自动把这个值装箱为Integer,通过Integer.valueOf();反之,在一个需要int的上下文里出现了Integer类型的值的话,就会自动把资格值拆箱为int,通过Integer.intValue()。其它基本类型同理。
我在以前做的一个演讲里讲解过javac什么地方实现了自动装箱与拆箱:
Java 程序的编译,加载 和 执行
作者:LJH