Integer x1 = 3, x2; // boxing
int y1 = x1; // unboxing
x2 = x1 + (x1 / 2);
我们假设我们有以下代码。第3行是否需要为x1进行2次取消装箱,或者我们只是说它为x1取消装箱1次,将整个结果分配给x2?
答案 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