参考链接:https://blog.csdn.net/cuixianlong/article/details/100151895
(感谢大佬解惑让我能稍微看懂class文件)
i = 1;
i+++i*i++ = ?
class文件反编译结果
public static void main(java.lang.String[]);
Code:
0: iconst_1 // 常数1入栈(i=1)
1: istore_1 // 赋值1号存储单元为常数1
2: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
5: iload_1 // 加载1号存储单元值到寄存器(stack[0]=1)
6: iinc 1, 1 // 递增1号存储单元值(i=i+1=1+1=2)
9: iload_1 // 加载1号存储单元值到寄存器(stack[1]=2)
10: iload_1 // 加载1号存储单元值到寄存器(stack[2]=2)
11: iinc 1, 1 // 递增1号存储单元值(i=i+1=2+1=3)
14: imul // 相乘(stack[1]=stack[1]*stack[2]=2*2=4)
15: iadd // 相加(stack[0]=stack[0]+stack[1]=1+4=5)
16: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
19: return // 返回(i=5)