publicclassOperationStack{publicstaticvoidmain(String[] args){int i =1;
i = i++;int j = i++;int k = i +++i* i++;
System.out.println("i="+ i +" j="+j +" k="+ k);}}//i=4 j=1 k=11
分析
JVM字节码分析
publicstaticvoidmain(java.lang.String[]);0: iconst_1
int i =0;0: iconst_1 // 将常量1入栈. 1: istore_1 // 将栈顶 int 型数值存入第2个本地变量int i = i++;2: iload_1 // 将第二个 int 型本地变量(i)推送至栈顶3: iinc 1,1// 将指定 int 型变量增加指定值(i++, 6: istore_1 // 将栈顶 int 型数值存入第二个本地变量. int j = i++;7: iload_1 // 将第二个 int 型本地变量(i)推送至栈顶8: iinc 1,1int k = i +++i* i++;11: istore_2 // 栈顶 int 型数值存入第三个本地变量(k)12: iload_1 // 将栈顶 int 型数值存入第2个本地变量(i)13: iinc 1,1// (i++)16: iload_1 // i出栈17: iload_1 // 18: iinc 1,121: imul
22: iadd
23: istore_3
24:return}