自增变量
先贴一串代码,看看运行结果
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