java自增变量,关于java:自增变量问题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

解析:

1、int i=1,局部变量表中有一个 i=1 的变量

2、i = i++,i++中 i 要运算,先把i的值压入操作数栈

3、i变量自增 1,不通过操作数栈,在局部变量表中i的值变为 2

3、最初进行赋值,把操作数中的值赋给 i,i的值又变为了 i。

所以说,i 的值如同只是很短暂的自增了一下。

4、int j = i++中,和下面的套路一样,i 的值自增变为了2。赋值操作使 j 变为1

5、int k = i + ++i * i++中,从左到右加载值顺次压入操作数栈。先把 i 压入操作数栈,i的值为2。

6、而后计算++i,i变量自增1变为3,再把i的值压入操作数栈。此时操作数栈有3和2

7、再计算i++,先把 i 的值压入操作数栈,再把i变量自增1变为4。此时操作数栈有3、3和2。

8、看运算符优先级。先把操作数栈中前两个弹出求乘积,3*3=9,将后果再压入栈。此时栈有9和2。

9、把操作数栈中的值弹出求和再赋值给 k,k值为11。

小结

赋值 = ,最初计算

= 左边的从左到右加载值顺次压入操作数栈

理论先算哪个,看运算符优先级

自增、自减都是间接批改变量的值,不通过操作数栈

最初的赋值之前,长期后果也是存储在操作数栈中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值