拳击和拆箱Java

时间:2018-02-01 19:44:56

标签: java boxing

Integer x1 = 3, x2; // boxing
int y1 = x1; // unboxing
x2 = x1 + (x1 / 2); 

我们假设我们有以下代码。第3行是否需要为x1进行2次取消装箱,或者我们只是说它为x1取消装箱1次,将整个结果分配给x2?

1 个答案:

答案 0 :(得分:0)

有IDE插件,可用于揭开装箱和拆箱的神秘面纱。这是你的代码:

   L0
    LINENUMBER 46 L0
    ICONST_3
    INVOKESTATIC java/lang/Integer.valueOf(I)Ljava/lang/Integer;
    ASTORE 1
   L1
    LINENUMBER 47 L1
    ALOAD 1
    INVOKEVIRTUAL java/lang/Integer.intValue()I
    ISTORE 3
   L2
    LINENUMBER 48 L2
    ALOAD 1
    INVOKEVIRTUAL java/lang/Integer.intValue()I
    ALOAD 1
    INVOKEVIRTUAL java/lang/Integer.intValue()I
    ICONST_2
    IDIV
    IADD
    INVOKESTATIC java/lang/Integer.valueOf(I)Ljava/lang/Integer;
    ASTORE 2