1.1 题目

  1. package s01.e01;
  2. public class Test {
  3. public static void main(String[] args) {
  4. int i = 1;
  5. i = i++;
  6. int j = i++;
  7. int k = i + ++i * i++;
  8. System.out.println("i=" + i);
  9. System.out.println("j=" + j);
  10. System.out.println("k=" + k);
  11. }
  12. }

image.png

1.2 推算过程

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

1.3 小结

  • 赋值 = ,最后计算
  • = 右边的从左到右加载值依次压入操作数栈
  • 实际先算哪个,看运算符优先级
  • 自增、自减操作都是直接修改变量的值,不经过操作数栈
  • 最后的赋值之前,临时结果也是存储在操作数栈中