<Java>你知道i=i++的运行结果是怎么计算的吗?

2021/6/5 20:51:07

本文主要是介绍<Java>你知道i=i++的运行结果是怎么计算的吗?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

有如下一段代码,可以先尝试计算一些运行的结果

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

.
.
.
.
.
.
.
.
.
.
.
.

运行结果

i=4
j=1
k=11

分析如下
在这里插入图片描述
int i=1; 这句执行结束后局部变量表中i的值就为1

i=i++; 执行这一句过程如下
①把i的值压入操作数栈,那么操作数栈中值为1
②执行i++操作,那么局部变量表中i的值为2
③最后执行赋值操作,把操作数栈中的值赋值给i,于是局部变量表中i的值被覆盖,变成1,因此i=1

int j=i++
①先把i的值压入操作数栈,那么操作数栈中值为1
②执行i++操作,局部变量表中i的值就变为2
③最后执行赋值操作,此时操作数栈中的值为1,因此j赋值为1,此时j=1,i=2

int k=i + ++i * i++;
虽然是先算乘法,但是压入操作数栈的过程是从左到右

因此过程如下
①先将i的值压入操作数栈,操作数栈的值为2
②执行++i操作,那么局部变量表中i的值就变为3
③注意,由于等式右边的计算尚未结束,因此i的值要压入操作数栈,因此栈中有两个元素,[2,3] (右边为栈顶)
④执行i++,先将i的值压入操作数栈,此时栈中有三个元素,[2,3,3] (右边为栈顶),然后执行i自增,局部变量表中i的值就变为4
⑤把操作数栈中前两个数弹出,执行乘积操作,3*3=9,那么把9压到操作数栈中,此时栈中有两个元素,[2,9](右边为栈顶)
⑥把操作数栈中前两个数弹出,执行加法操作,9+2=11
⑦此时等式右边已经计算完成,赋值给k,所以k=11

因此答案为

i=4
j=1
k=11



这篇关于<Java>你知道i=i++的运行结果是怎么计算的吗?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程