这里有一个例子
public Integer add(Integer a) {
a++;
return a;
}
字符串
此方法的相应字节码指令如下所示
0 aload_1
1 astore_2
2 aload_1
3 invokevirtual #62 <java/lang/Integer.intValue : ()I>
6 iconst_1
7 iadd
8 invokestatic #52 <java/lang/Integer.valueOf : (I)Ljava/lang/Integer;>
11 astore_1
12 aload_2
13 pop
14 aload_1
15 areturn
型
在第12-13行中,您可以观察到它执行了一个压入堆栈的操作,然后执行了一个立即弹出操作。
我想知道为什么要这样设计它,为什么它需要另一个“a”到LocalVariableTable的副本
1条答案
按热度按时间ryevplcw1#
因为
a++
是a = a + 1
的简写,在返回变量之前需要重新赋值。看看字节码中的以下代码:字符串