代碼塊咱們能夠把它看成一個沒有方法名,沒有返回值,沒有入參的一個特殊方法。spa
代碼塊的執行優先級高於構造方法,當你實例化一個對象時系統會先執行代碼塊中的代碼,而後再執行構造方法。基於此特性咱們能夠在代碼塊中給咱們想要的變量賦予初始值,或者加載數據。對象
由此咱們引伸出來一個變量能夠在三個地方賦予初始值。變量
1 在聲明變量的時候賦予初始值。方法
2 在代碼塊中賦予初始值。數據
3 在構造方法中賦予初始值。co
當代碼塊中含有多個代碼塊時,系統按照從上往下的原則依次執行相應的代碼塊,而後再執行構造方法。實例化
當系統中有靜態代碼塊時,系統會先執行靜態代碼塊而後執行普通的代碼塊,最後執行構造方法。由於靜態代碼塊屬於類而非靜態代碼塊屬於對象,類的優先級高於對象,只有先初始化類以後才能初始化對象,也就是說先有類纔有對象。實例
靜態代碼塊系統只會在初始化類的時候執行一次,之後當實例化新的類的時候系統只會執行非靜態的代碼塊。系統
靜態代碼塊中不能出現非靜態變量。