摘要:中間緩存變量,在看面試寶典時,看到面試例題,關于緩存變量,一直一臉茫然,查了部分資料,在這里和大家分享一下。題目輸出結果居然是在這里,就涉及到所謂的中的中間緩存變量了。
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...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70488.html
摘要:物理計算機并發問題在介紹內存模型之前,先簡單了解下物理計算機中的并發問題。基于高速緩存的存儲交互引入一個新的問題緩存一致性。寫入作用于主內存變量,把操作從工作內存中得到的變量值放入主內存的變量中。 物理計算機并發問題 在介紹Java內存模型之前,先簡單了解下物理計算機中的并發問題。由于處理器的與存儲設置的運算速度有幾個數量級的差距,所以現代計算機加入一層讀寫速度盡可能接近處理器的高速緩...
摘要:內存模型即,簡稱,其規范了虛擬機與計算機內存時如何協同工作的,規定了一個線程如何和何時看到其他線程修改過的值,以及在必須時,如何同步訪問共享變量。內存模型要求調用棧和本地變量存放在線程棧上,對象存放在堆上。 Java內存模型即Java Memory Model,簡稱JMM,其規范了Java虛擬機與計算機內存時如何協同工作的,規定了一個線程如何和何時看到其他線程修改過的值,以及在必須時,...
摘要:內存模型對內存模型的介紹對內存模型的結構圖的線程之間的通信是通過共享內存的方式進行隱式通信,即線程把某狀態寫入主內存中的共享變量,線程讀取的值,這樣就完成了通信。 Java內存模型(JMM) 1.對內存模型的介紹 ①對Java內存模型的結構圖 java的線程之間的通信是通過共享內存的方式進行隱式通信,即線程A把某狀態寫入主內存中的共享變量X,線程B讀取X的值,這樣就完成了通信。是一種...
摘要:此時,就出現了線程不安全問題了。因為的初始值會是因此,重排序是有可能導致線程安全問題的。真的能完全保證一個變量的線程安全嗎我們通過上面的講解,發現關鍵字還是挺有用的,不但能夠保證變量的可見性,還能保證代碼的有序性。 對于volatile這個關鍵字,相信很多朋友都聽說過,甚至使用過,這個關鍵字雖然字面上理解起來比較簡單,但是要用好起來卻不是一件容易的事。 這篇文章將從多個方面來講解vol...
閱讀 2676·2023-04-25 20:19
閱讀 1930·2021-11-24 09:38
閱讀 1632·2021-11-16 11:44
閱讀 4341·2021-09-02 15:40
閱讀 1317·2019-08-30 15:55
閱讀 2022·2019-08-30 15:52
閱讀 3759·2019-08-29 17:20
閱讀 2247·2019-08-29 13:48