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, 因為這是兩步,右邊的自增是在 是後運算,是以當進行給左邊指派的時候,就行使用初始值,也就是臨時緩存變量指派,而自增的結果就會被抛棄。以上是個人總結後認為比較好了解的地方,如有其他意見,還請交流指出,謝謝!
具體參考位址:http://blog.csdn.net/u0112634...