- 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 |
文章详细阐述了Java中i++运算符的工作原理,包括操作数栈和局部变量表的交互过程。在i=i++和i++=i的运算中,变量i的值在不同时间点被压栈和自增,影响了最终的赋值结果。示例代码展示了这些运算的步骤,帮助理解其行为差异。
1万+

被折叠的 条评论
为什么被折叠?



