Java中間緩存變量

Java中間緩存變量,在看《Java面試寶典》時,看到面試例題,關於Java緩存變量,一直一臉茫然,查了部分資料,在這裏和你們分享一下。java

題目:
public class Test {
    public static void main(String[] args) {
        int j = 0;
        for (int i =0; i<100; i++) {
            j = j++;
        }
        System.out.println(j++);
    }
}

輸出結果竟然是 0面試

在這裏,就涉及到所謂的Java中的中間緩存變量了。在Java中(其餘的語言不瞭解),當進行自增(或自減)運算時,Java會對運算的變量進行臨時緩存。
例如:緩存

j = 0;
j = j ++;
就能夠分解成:
temp = j = 0; //因爲自增在後,因此,先進行臨時變量緩存
j = j + 1; // j ++ 運算 ,緩存變量後,進行運算自增
j = temp; // 將緩存變量賦值給 j

能夠這麼理解,也就是, j = j++運算的時候 ,先進行左邊的運算,而後再進行賦值,思路是這樣的。
而後,當左邊進行了兩個運算,第一步是利用中間緩存變量,緩存 j 的初始值,也就是0, 第二部,是給j的變量自增爲1, 由於這是兩步,右邊的自增是在 是後運算,因此當進行給左邊賦值的時候,就行使用初始值,也就是臨時緩存變量賦值,而自增的結果就會被拋棄。以上是我的總結後認爲比較好理解的地方,若有其餘意見,還請交流指出,謝謝!.net

具體參考地址:http://blog.csdn.net/u0112634...code

相關文章
相關標籤/搜索