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}