[英]Does Java autobox when assigning an int to an Object?
这是自动装箱吗?
Object ob = 8;
上面的代码是否会先将int文字8包装为Integer,然后将其引用分配给变量ob? 因为Java语言规范在这种情况下没有任何帮助。
上面的代码是否会先将int文字8包装为Integer,然后将其引用分配给变量ob?
是。 (或者更确切地说,它将int
值装箱到Integer
对象中,然后将引用分配给变量ob
。实际上,整数值是文字的事实在这里实际上是无关紧要的。这可以是为int
返回的方法调用例。)
因为Java语言规范在这种情况下没有任何帮助。
这不是真的。 我的意思是,它没有明确处理分配给Object
,但其工作方式与普通转换相同。
规范的第5.1.7节涉及装箱,该装箱会将int
转换为Integer
...,然后将Integer
引用分配给Object
变量是正常的引用转换。
分配转换中详细介绍了这种特定情况:
当将表达式的值赋给变量时(第15.26节),将发生赋值转换:必须将表达式的类型转换为变量的类型。
分配上下文允许使用以下之一:
- [...]
- 装箱转换(可选)后跟加宽参考转换
因此,在您的情况下:
8 (int) === boxing ===> 8 (Integer) ==== reference widening ===> 8 (Object)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.