static關(guān)鍵字:
修飾變量,方法,類;靜態(tài)代碼塊
靜態(tài)代碼塊可以在類加載時初始化變量,靜態(tài)內(nèi)部類我認(rèn)為在不需要回掉外部類變量,只是單純在外部類中使用便可生命為靜態(tài),普通內(nèi)部類需要持有外部類的引用,因此可以訪問外部類的變量。
volatile關(guān)鍵字:
主要用在多線程中的變量安全問題,常見在單例模式中。
普通變量在多線程中會有各自的一份拷貝,各個線程之間修改變量容易產(chǎn)生同步問題。若變量聲明為volatile,則線程讀取的一值為主內(nèi)存中的最新值,但線程修改變量值時會立馬回寫主存中的值,其他線程在操作變量時會直接讀取內(nèi)存中的值進行操作,從而避免多線程問題。
但volatile無法保證原子性:若是變量計算依賴本身的值容易出錯,,條件語句中出現(xiàn)運算也易出錯,常用來實現(xiàn)標(biāo)志位。