Java中i++和++i
阿新 • • 發佈:2021-11-06
韓順平老師在B站的視訊中有一道題,題目是這樣的
int i=1;
i=i++;
System.out.println(i);
問結果是多少,為什麼
我剛開始一直以為結果是2,後來老師說結果是1,我聽他講沒聽明白,編譯器除錯的時候也沒有很明確的解釋,我就搜了一下,下面是我總結的結論。
-
結論一:因為java採取了中間變數快取機制。
在java中,執行自增運算時,會為每一個自增操作分配一個臨時變數,如果是i++,就會“先自加1後賦值(給臨時變數)” ;如果是i++,就會“先賦值(給臨時變數)後自加1” 。運算最終使用的,並非變數本身,而是被賦了值的臨時變數。
-
結論2(直接記結論太長不看版):把整個表示式看作是一個整體
若變數名在前(i++),那麼整個表示式的值就是原值不變 若變數名在後(++i),那麼整個表示式的值就是原值+1
參考資料:1.韓順平老師視訊:https://www.bilibili.com/video/BV1fh411y7R8?p=65&t=197.7
2.https://blog.csdn.net/ffanfanm/article/details/12784489
3.https://blog.csdn.net/oZuoQi12345678910/article/details/42645561
4.https://blog.csdn.net/FRMNZR/article/details/100564754