public static void main(String[] args){
int i = 3;
i = i++;
System.out.println(i);
}
如上代码输出的是:3
下图为上述代码的字节码
iconst_3 将int常量3压入到操作数栈中
istore_1 将栈顶元素(出栈)放入局部变量表位置为1的地方
iload_1将局部变量中位置为1的数压栈(局部变量表位置为1的值扔存在且为3)
iinc 1 by 1 将局部变量表中位置为1的数+1(局部变量表位置为1的值为4)
istore_1 将栈顶元素(出栈)放入局部变量表位置为1的地方(局部变量表位置为1的值被覆盖即3)
public static void main(String[] args) {
int i = 3;
i = ++ i;
System.out.println(i);
}
如上代码输出的是:4
下图为上述代码的字节码
iconst_3 将int常量3压入到操作数栈中
istore_1 将栈顶元素(出栈)放入局部变量表位置为1的地方
iinc 1 by 1 将局部变量表中位置为1的数+1(局部变量表位置为1的值为4)
iload_1将局部变量中位置为1的数压栈
istore_1 将栈顶元素(出栈)放入局部变量表位置为1的地方