java中 i = i++ 的結果


  昨天看到下面這段代碼,分享出來給大家看看,大家也可以討論討論。

  int i = 0;
  i = i++;
  System.out.println("i的值是 "+i);

   根據我們通常所知道的后自增先使用后增加的道理,i++在使用后i自身會增加一個數值,初始值為0時,自增后就是1,那么輸出的結果應該是1.但實際上這題的結果卻是0。

  這是因為jvm在處理i = i++時, 會建立一個臨時變量來接收i++的的值,然后返回這個臨時變量的值,返回的值再被等號左邊的變量接收了,這樣就是說i雖然自增了但是又被賦值了0,這樣輸出的結果自然就是0了。

  不妨我們用temp臨時變量來接收i++的值,來看一下結果。

 

可以看到temp的結果就是0,也就是說賦值號右邊傳遞過來的是i未自增前的值,這符合后自增運算符先使用后增加的原則,這時候我們再輸出一下i的值。

i也的確自增了一個值,這樣就好理解為什么i = i++中輸出第一個i為什么是0了,因為i在自增后又被等式右邊的值覆蓋了。也就是說這里的i的值發生了三次變化,第一次是我們定義i = 0;第二次就是i自增后變成了1;第三次就是i又被0值覆蓋了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM