i++和++i在操作数栈和局部变量表的分配

1、执行运算指令时,压入操作数栈的顺序不受运算优先级影响

2、i++ 先将i值压入到操作数栈,再在局部变量表自增

3、++i 先在局部变量表自增,再压入到操作数栈

记忆方法:i的先后,表示压入操作数栈的先后。

看如下例子,试着分析

    public static void main(String[] args) {
        int i = 1;
        //局1操1 + 局2操1;局3操3; 1 + 1 * 3 = 4
        int j = i + (i++) * (++i);
        System.out.println(j);
        //局3操3,局4操4;局5操4; 3 + 4 * 4 = 19
        int k = i + (++i) * (i++);
        System.out.println(k);
    }


结果:

i++和++i在操作数栈和局部变量表的分配_第1张图片

你可能感兴趣的:(java,开发语言)