1. 程式人生 > >java裡的i++與i=i++會有怎樣的結果?JVM做了什麼?

java裡的i++與i=i++會有怎樣的結果?JVM做了什麼?

先來看下這段程式碼:

  public static void main(String[] args) {
        int count = 0;
        for (int i = 0; i < 10; i++) {
            count=count++;
        }
        System.out.println(count);
    }
}

結果是什麼呢?結果是10?不對,結果是0。為什麼呢?
我們來看看i++Jvm做了什麼。
步驟一:JVM將i的值,而不是引用,拷貝到臨時變數區
步驟二:將count值加一
步驟三:返回臨時變數區的值。
而i=i++;相當於多了一步,將i=i(這個"i"是臨時變數區的值,為0),所以i=i++,在這裡一直都是0。
所以i++是先返回值,再賦值。
而++i則相反。所以上面要返回想要的值,可以改為count++;或者count=++count;