当将==用于基本值和装箱值时,自动装箱完成还是拆箱完成

瑟勒

以下代码进行编译(使用Java 8):

Integer i1 = 1000;
int i2 = 1000;
boolean compared = (i1 == i2);

但是它是做什么的呢?

取消装箱i1

boolean compared = (i1.intvalue() == i2);

或盒子i2

boolean compared = (i1 == new Integer(i2));

那么它是比较两个Integer对象(按引用)还是int按值比较两个变量?

请注意,对于某些数字,引用比较将产生正确的结果,因为Integer类会维护一个介于-128to之间的值的内部缓存127(另请参见TheLostMind的注释)。这就是我1000在示例中使用的原因,也是为什么我特别询问拆箱/装箱而不是比较结果的原因。

亚述

它在JLS#15.21.1中定义

如果相等运算符的操作数都是数字类型,或者一个是数字类型,而另一个可转换为数字类型(第5.1.8节),则对这些操作数执行二进制数字提升(第5.6.2节)。

JLS#5.6.2

当运算符将二进制数字提升应用于一对操作数时,每个操作数必须表示一个可转换为数字类型的值,以下规则适用:

  • 如果任何操作数是引用类型,则将其进行拆箱转换[...]

因此,为回答您的问题,将Integer拆箱到int

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

拆箱指数因子表将装箱值乘回原始值

来自分类Dev

装箱值被拆箱,然后立即重新装箱

来自分类Dev

如何对熊猫系列进行装箱,将每个箱的箱尺寸设置为最大/最小值的预设值

来自分类Dev

将结构值作为接口值传递时,如何避免装箱?

来自分类Dev

将值类型装箱到C#中的引用类型中时需要多少内存?

来自分类Dev

试图将装箱的dyn特性传递到函数中时,出现“借入的值寿命不足”错误

来自分类Dev

OCaml可以装箱还是拆箱?

来自分类Dev

将堆栈分配的值装箱后会发生什么?

来自分类Dev

如何将数组中的数据装箱但包含以前的值?

来自分类Dev

通过参考/值传递-装箱/拆箱关系

来自分类Dev

谁将进行自动装箱/拆箱?

来自分类Dev

将值从jQuery自动完成发送到HiddenField

来自分类Dev

装箱拆箱

来自分类Dev

装箱和拆箱的C ++类

来自分类Dev

与通用类型和装箱/拆箱交互

来自分类Dev

将值类型装箱为msg.obj时,android.os.Handler.removeMessages不起作用

来自分类Dev

在装箱和拆箱操作中将预定义变量的值分配给对象类型变量

来自分类Dev

将装箱值映射到 Rust 中的可变解引用值

来自分类Dev

为什么整数自动装箱和拆箱对Java中的Arrays.asList不起作用?

来自分类Dev

自动装箱/拆箱在Java中如何工作?

来自分类Dev

在.NET中使用Variance可以将值类型装箱以避免它们不变吗?

来自分类Dev

自动装箱无法将int转换为Integer

来自分类Dev

装箱和拆箱会在阵列中发生吗?

来自分类Dev

在C#中从列表到对象的装箱和拆箱

来自分类Dev

转换为基类是否涉及装箱和拆箱

来自分类Dev

根据条件将CSS应用于“自动完成”?

来自分类Dev

如何手动将值(并触发select事件)设置为jQuery自动完成

来自分类Dev

JS:将地址元素设置为适当的值,而无需单击自动完成

来自分类Dev

自动装箱不适用于布尔值

Related 相关文章

  1. 1

    拆箱指数因子表将装箱值乘回原始值

  2. 2

    装箱值被拆箱,然后立即重新装箱

  3. 3

    如何对熊猫系列进行装箱,将每个箱的箱尺寸设置为最大/最小值的预设值

  4. 4

    将结构值作为接口值传递时,如何避免装箱?

  5. 5

    将值类型装箱到C#中的引用类型中时需要多少内存?

  6. 6

    试图将装箱的dyn特性传递到函数中时,出现“借入的值寿命不足”错误

  7. 7

    OCaml可以装箱还是拆箱?

  8. 8

    将堆栈分配的值装箱后会发生什么?

  9. 9

    如何将数组中的数据装箱但包含以前的值?

  10. 10

    通过参考/值传递-装箱/拆箱关系

  11. 11

    谁将进行自动装箱/拆箱?

  12. 12

    将值从jQuery自动完成发送到HiddenField

  13. 13

    装箱拆箱

  14. 14

    装箱和拆箱的C ++类

  15. 15

    与通用类型和装箱/拆箱交互

  16. 16

    将值类型装箱为msg.obj时,android.os.Handler.removeMessages不起作用

  17. 17

    在装箱和拆箱操作中将预定义变量的值分配给对象类型变量

  18. 18

    将装箱值映射到 Rust 中的可变解引用值

  19. 19

    为什么整数自动装箱和拆箱对Java中的Arrays.asList不起作用?

  20. 20

    自动装箱/拆箱在Java中如何工作?

  21. 21

    在.NET中使用Variance可以将值类型装箱以避免它们不变吗?

  22. 22

    自动装箱无法将int转换为Integer

  23. 23

    装箱和拆箱会在阵列中发生吗?

  24. 24

    在C#中从列表到对象的装箱和拆箱

  25. 25

    转换为基类是否涉及装箱和拆箱

  26. 26

    根据条件将CSS应用于“自动完成”?

  27. 27

    如何手动将值(并触发select事件)设置为jQuery自动完成

  28. 28

    JS:将地址元素设置为适当的值,而无需单击自动完成

  29. 29

    自动装箱不适用于布尔值

热门标签

归档