1. 先上结论

在工作中,避免使用复杂的++自增,容易造成混乱。不如直接+1,清晰明了,不容易出bug。此题最大的意义就是面试

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

​建议:《JVM虚拟机规范》关于指令的部分​

2. 测试代码

public class AutoIncrement {
public static void main(String[] args) {
int i = 1;
i = i++;
int j = i++;
int k = i + ++i * i++;
System.out.println("i=" + i); // i=4
System.out.println("j=" + j); // j=1
System.out.println("k=" + k); // k=11
}
}

输出结果

i=4

j=1

k=11