自增变量
先贴一串代码,看看运行结果
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 = i++:
这一步先把i变量压入操作数栈中:

然后进行自增操作,因此i的值会先变为2

接下来进行赋值操作,将操作数栈中的值赋予变量i,因此i的值此时会被1所覆盖

第二步:int j = i++;
先同理,将i的值先压入栈中

下一步进行自增操作

接下来,将操作数栈中的值赋予变量j,因此此时变量j的值为1,变量i的值变为2

最后一步:int k = i + ++i * i++;
同理,先将i的值压入栈中:

然后进行++i的运算,与i++不同的是,++i是先将i的值自增,然后再将其压入栈中,而i
++是先将值压入栈中,后再进行自增运算。

然后进行i++运算,先将i的值压入栈中,然后进行自增运算,此时i的值变为4

然后我们按照运算规则,先乘除后加减,算**++ii++**的值,有图我们可以得知33=9,因此我们将运算出来的结果重新压入栈中


然后进行相加运算,并且把运算结果赋值给新的变量k

481

被折叠的 条评论
为什么被折叠?



