i++和i++的用法

接着上一篇文章,发现关于i++和++i确实有必要深入了解。
实际上++i比较容易理解,就是把原值加1,再用于运算中,但i++却是先进行运算,再进行递增加1,在多个组合式是,到底什么是对i++进行自增加1的运算却是一个较复杂的问题。
另一道题
class Test{
  public static void main(String[] args){
     int i = 0,j=0;
     i = ++i + i++ + i++ + i++;//式1
     j = j++ + j++ + j++ + ++j;//式2
    System.out.print(“i=”+i);
    System.out.print(“,j=”+j);
  }
}
答案 : i=7 ,j=7

式1的运算过程:
第一步,第一个++i计算后i=1,++i计算的结果为1
第二步,然后就是i++的计算后i的值不变仍为1,i++的计算结果为1;
第三步,接着计算前一步骤中i++自增后的值,此时i=2,再就是第二i++的计算,i的值不变仍是2,所以这一步中i++的计算结果为2;
第四步,同上一步计算前一步骤中i++自增后的值,此时i=3,所以这一步中i++的结果是3
第五步,最终结果是1+1+2+3=7;

式2的运算过程:
第一步,j++计算后的结果为0 ;j进行自增运算后j=1;(先将j的值存入堆栈,然后对变量区中的j自加1,此时变量区中j=1)
第二步,第二个j++的运算结果为1,但是j = 2;(将变量区的j的值存入堆栈,然后对变量区中的j自加1,此时变量区中的j=2)
第三步,第三个j++的运算结果为2,但j = 3;(将变量区的j的值存入堆栈,然后对变量区中的j自加1,此时变量区中的j=3)
第四步:++j运算结果为4,j=4;(对变量区中的j自加1,然后再将变量区中j的值存入堆栈,此时变量区中的j=4)
第五步,最终结果是0+1+2+4=7;

式的运算过程是按照变量区的值和堆栈中的值的变化来写,总结起来i++就是先将变量区中的值存入堆栈中,再对变量区进行自加1,
而++i则是先变量区的值进行自加1操作后,再将变量区中的值放入堆栈中。堆栈中保存的是临时值,在运算式中用到的值都是变量区中的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值