Java 字节码分析 i=i++的结果

示例代码

public static void main(String[] args) {
    int i =3;
    i=i++;
    System.out.println(i);
}

运行结果是3

分析

Java 字节码分析 i=i++的结果

关键还是对i++ IINC 1 1的理解。i++是直接在局部变量表上做自加操作。而i=i+1是先从局部变量表拷贝i的值到操作栈,在操作栈执行i+1操作,最后将操作栈的运算结果写入局部变量表,从这个角度也体现了i++的运算效率更高。