- i++:先把 i 的值压入操作数栈,再进行自增
- ++i:先进行自增,再把 i 的值压入操作数栈
public static void main(String[] args) {
int i = 1;
i = i++;
int j = i++;
int k = i + ++i * i++;
System.out.println("i=" + i);
System.out.println("j=" + j);
System.out.println("k=" + k);
}
运算步骤 | 局部变量表 | 操作数栈 |
int i = 1; | i=1 | |
i = i++; | ||
①把i的值压入操作数栈 | i=1 | 1 |
②i变量自增1 | i=2 | 1 |
③把操作数栈中的值赋值给i | i=1 | |
int j = i++; | ||
①把i的值压入操作数栈 | i=1 | 1 |
②i变量自增1 | i=2 | 1 |
③把操作数栈中的值赋值给j | i=2,j=1 | |
int k = i + ++i * i++; | ||
①把i的值压入操作数栈 | i=2,j=1 | 2 |
②i变量自增1 | i=3,j=1 | |
③把i的值压入操作数栈 | i=3,j=1 | 3,2 |
④把i的值压入操作数栈 | i=3,j=1 | 3,3,2 |
⑤i变量自增1 | i=4,j=1 | 3,3,2 |
⑥把操作数栈中前两个弹出求乘积结果再压入栈 | i=4,j=1 | 9,2 |
⑦把操作数栈中的值弹出求和再赋值给k | i=4,j=1,k=11 |