Java在为对象分配int时是否自动装箱?

Java在为对象分配int时是否自动装箱?,java,object,autoboxing,Java,Object,Autoboxing,这是自动装箱吗 Object ob = 8; 上面的代码会先将int-literal 8包装成整数,然后将其引用分配给变量ob吗?因为java语言规范对此没有任何说明 上面的代码会先将int-literal 8包装成整数,然后将其引用分配给变量ob吗 对。(或者更确切地说,它将int值放入Integer对象中,然后将引用分配给变量ob。事实上,整数值是一个文本在这里并不重要。例如,它可能是一个返回int的方法调用。) 因为java语言规范对此没有任何说明 那不是真的。我的意思是,它没有显式地处

这是自动装箱吗

Object ob = 8;
上面的代码会先将int-literal 8包装成整数,然后将其引用分配给变量ob吗?因为java语言规范对此没有任何说明

上面的代码会先将int-literal 8包装成整数,然后将其引用分配给变量ob吗

对。(或者更确切地说,它将
int
值放入
Integer
对象中,然后将引用分配给变量
ob
。事实上,整数值是一个文本在这里并不重要。例如,它可能是一个返回
int
的方法调用。)

因为java语言规范对此没有任何说明

那不是真的。我的意思是,它没有显式地处理赋值给
对象的问题,但它的工作方式与普通转换相同


规范的第三部分涉及装箱,它将
int
转换为
Integer
。。。然后将一个
整数
引用指定给一个
对象
变量是一个正常的引用转换。

此特定情况在以下部分中详细说明:

将表达式的值赋值(§15.26)给变量时,会发生赋值转换:表达式的类型必须转换为变量的类型。
分配上下文允许使用以下内容之一:

  • [……]
  • 装箱转换(可选)后跟加宽参照转换
因此,在你的情况下:

8 (int) === boxing ===> 8 (Integer) ==== reference widening ===> 8 (Object)