idea 配置指令码查看快捷
Program : 填写jdk => bin => javap.exe 路径
Arguments : -c $FileClass$
Working directory : $OutputPath$
解释 i++ 与 ++i 指令码区别
/**
* @description:
* 0: iconst_0 //int 0 入栈顶
* 1: istore_1 // 将栈顶值存入给第一个局部变量
* 2: iconst_0 // int 0 入栈顶
* 3: istore_2 // 将栈顶值存入给第二个局部变量
* 4: iload_1 // 将第一个局部变量值推送至栈顶
* 5: iinc 1, 1 //将第一个局部变量自增 eg:此时局部变量表 a = 1;
* 8: istore_1 // 将栈顶值存入第一个局部变量 eg:此时栈顶值为 0 故 a = 0;
* 9: getstatic
* 12: iload_1 // 将第一个局部变量值推送至栈顶 eg:栈顶为0
* 13: iinc 1, 1 //将第一个局部变量自增 eg:此时局部变量表 a = 1;
* 16: invokevirtual
* 19: iinc 2, 1 //将第二个局部变量自增 eg:局部变量表 b = 1;
* 22: iload_2 // 将第二个局部变量b 推送至栈顶 eg:栈顶值为 1;
* 23: istore_2 // 将栈顶值存入第二个局部变量 eg: b = 1;
* 24: getstatic
* 27: iload_2 // 局部变量 b 上栈顶 eg:栈顶 1
* 28: invokevirtual
* 31: return
* @return void
* @author: xpy
* @time 2019/12/5 10:57
*/
@Test
public void test1(){
int a=0,b=0;
a = a++;
System.out.println(a);
b = ++b;
System.out.println(b);
}