例如,对于方法
public int f() {
int k = 1;
for (int i = 0; i < 10; i++) {
k += 2;
}
return k;
}
javac
生成以下字节码:
public int f();
Code:
0: iconst_1
1: istore_1
2: iconst_0
3: istore_2
4: iload_2
5: bipush 10
7: if_icmpge 19
10: iinc 1, 2
13: iinc 2, 1
16: goto 4
19: iload_1
20: ireturn
在标签 4 处,堆栈具有相同的大小 (0),无论之前是哪条指令:3 或 16。
对于从 java 代码生成的字节码,这通常是正确的吗?