当前位置: 首页 > 面试题库 >

将整数分配给对象时,Java是否自动装箱?

翟淮晨
2023-03-14
问题内容

这是自动装箱吗?

Object ob = 8;

上面的代码是否会先将int文字8包装为Integer,然后将其引用分配给变量ob?因为Java语言规范在这种情况下没有任何帮助。


问题答案:

上面的代码是否会先将int文字8包装为Integer,然后将其引用分配给变量ob?

是。(或者更确切地说,它将把int值装箱到一个Integer对象中,然后将引用分配给变量ob。实际上,整数值是文字的事实在这里是无关紧要的。例如,它可以是return的方法调用int。)

因为Java语言规范在这种情况下没有任何帮助。

这不是真的。我的意思是,它没有 明确 处理分配给Object,但其工作方式与普通转换相同。

规范的第5.1.7节涉及装箱,装箱将转换intInteger…,然后将Integer引用分配给Object变量是正常的引用转换。



 类似资料:
  • 我无法为这个看似简单的问题找到明确的答案。如果我写一个这样的方法: 返回值是自动装箱到 Integer 中,还是取决于返回后值会发生什么变化(例如,它被分配到的变量是声明为 Integer 还是 int)?

  • 问题内容: 我希望下面的代码只会初始化,以及字典。但它似乎具有复制效果: 如您所见,结果如下: 为什么该程序会产生先前的结果,当我期望它返回时: 问题答案: 这是因为在Python中,变量(名称)只是对单个对象的引用。当您指定,你真的复制存储器地址(或指针,如果你愿意)从到。该词典仍然有一个实例。 要获得所需的行为,请使用方法,或者如果您的字典可能具有嵌套的字典或其他嵌套的对象,请使用。

  • 问题内容: 为什么以下代码无法编译 但是以下确实可以编译 在这两种情况下,我不只是将整数值分配给char吗? 问题答案: 可以将A 分配给不带强制转换的,因为这是扩大的转换。反之,将a 转换为a 需要转换,因为这是缩小的转换。 另请参见JLS。第5章。转换和升级。

  • 问题内容: 我以前从未做过,也找不到答案。这可能不是用于此目的的正确数据类型,但是我只想分配一个int,然后将另一个没有in循环的int分配到2D数组中,值实际上是从另一个函数返回的,但是为了简单起见,只是使用in i和k,这就是我以为您会这样做的方式,但事实并非如此: TIA-如果我误选了错误的树,请随时向我指出一个更好的数据结构的方向。 问题答案: 最好的方法可能是一次声明并分配所有值。如图所

  • 问题内容: 如果我执行以下操作 因为0是使用32位的整数文字,而d是使用64位的双精度变量,那么剩余的32位会被随机垃圾填充,还是Java正确地提升了文字? 问题答案: Java正确地将其提升,否则会有相当多的代码是有问题的:-) Java语言规范的5.1.2节详细介绍了这一点: 以下19个特定于原始类型的特定转换称为扩展原始转换: 扩展原始转换不会丢失有关数值总体大小的信息。确实,从整数类型到另

  • 问题内容: 我多次听说,在实例化对象时应该执行以下操作: “接口”名称=新的“类”(); 例如,针对实现的类链表: 实现许多接口,包括队列,双端队列等。上面的代码和 要么 为什么必须同时指定两次类型?似乎多余,但oracledocs似乎没有提及。 问题答案: 在Java 7中是多余的。可以将其重写为。 你想写类似的原因: 如果您改变主意,则可以为您提供以后更改数据收集的自由。这样,您的代码将更加灵