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操作後,再將變量區中的值放入堆棧中。堆棧中保存的是臨時值,在運算式中用到的值都是變量區中的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章