1. 程式人生 > 其它 >Java中i++和++i

Java中i++和++i

韓順平老師在B站的視訊中有一道題,題目是這樣的

int i=1;
i=i++;
System.out.println(i);

問結果是多少,為什麼

我剛開始一直以為結果是2,後來老師說結果是1,我聽他講沒聽明白,編譯器除錯的時候也沒有很明確的解釋,我就搜了一下,下面是我總結的結論。

  1. 結論一:因為java採取了中間變數快取機制。

    在java中,執行自增運算時,會為每一個自增操作分配一個臨時變數,如果是i++,就會“先自加1後賦值(給臨時變數)” ;如果是i++,就會“先賦值(給臨時變數)後自加1” 。運算最終使用的,並非變數本身,而是被賦了值的臨時變數。

  2. 結論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