Fari

i++的java底层原理

  1. i++问题

    int i = 0;
    i = i++;
    print(i) // 0
    

    解释: i++中有两个临时变量,所以上式编译之后会成为

    int i = 0;
    byte temp1 = i;
    int temp2 = i + 1;
    i = temp1;
    print(i)
    

    但是其真正的字节码中只有i一个变量,使用栈完成上述结果(复习栈帧的内容)