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