先說執(zhí)行順序:我們在new一個對象時,如果類還沒加載,就需要先將類加載到內存,此時就會執(zhí)行靜態(tài)代碼塊,在創(chuàng)建對象時,是先執(zhí)行代碼塊,然后執(zhí)行構造器。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供陳巴爾虎網(wǎng)站建設、陳巴爾虎做網(wǎng)站、陳巴爾虎網(wǎng)站設計、陳巴爾虎網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、陳巴爾虎企業(yè)網(wǎng)站模板建站服務,10年陳巴爾虎做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
Java靜態(tài)代碼塊的作用:Java靜態(tài)代碼塊中的代碼會在類加載JVM時運行,且只被執(zhí)行一次,也就是說這些代碼不需要實例化類就能夠被調用。一般情況下,如果有些代碼必須在項目啟動的時候就執(zhí)行的時候,就需要使用靜態(tài)代碼塊。
java中首先是靜態(tài)塊先執(zhí)行,靜態(tài)方法,最后是構造函數(shù)。
靜態(tài)初始化塊:當類第一次加載時執(zhí)行。非靜態(tài)初始化塊:非靜態(tài)初始化塊會在構造函數(shù)執(zhí)行時,且在構造函數(shù)主體代碼執(zhí)行之前被執(zhí)行。區(qū)別如下:執(zhí)行次數(shù)不同 靜態(tài)塊只執(zhí)行一次,初始化塊可以執(zhí)行多次。
首先打開電腦上的eclipse軟件,配置好jdk的,如下圖所示。點擊左上角的file,點擊new,點擊Javaproject,如下圖所示。新建一個class文件,自己取名字,勾引main選項,自動調用main方法。
靜態(tài)塊確實是在main之前運行,但這不是關鍵。 關鍵在于類的初始化過程。類的初始化,包括靜態(tài)賦值如 static boolean initialized = false; 和靜態(tài)初始化塊, static { ... }, 按照聲明的順序依次執(zhí)行。
1、構造函數(shù):執(zhí)行時間比構造代碼塊時間晚,也是在對象初始化的時候運行。沒有返回值,構造函數(shù)名稱和類名一致。構造代碼塊:執(zhí)行時間比靜態(tài)代碼塊晚,比構造函數(shù)早,和構造函數(shù)一樣,只在對象初始化的時候運行。
2、靜態(tài)代碼塊:在java中使用static關鍵字聲明的代碼塊。靜態(tài)塊用于初始化類,為類的屬性初始化。每個靜態(tài)代碼塊只會執(zhí)行一次。由于JVM在加載類時會執(zhí)行靜態(tài)代碼塊,所以靜態(tài)代碼塊先于主方法執(zhí)行。
3、所以理所當然的,構造代碼塊在構造函數(shù)之前執(zhí)行。
1、Java靜態(tài)代碼塊的作用:Java靜態(tài)代碼塊中的代碼會在類加載JVM時運行,且只被執(zhí)行一次,也就是說這些代碼不需要實例化類就能夠被調用。一般情況下,如果有些代碼必須在項目啟動的時候就執(zhí)行的時候,就需要使用靜態(tài)代碼塊。
2、Java也是一樣,Java的.class字節(jié)碼文件要想執(zhí)行,首先也要加載到內存,由類加載器把字節(jié)碼文件的代碼加載到內存中,這一步就叫類加載,這是首先要進行的。
3、首先靜態(tài)代碼塊static{...}是在類被裝載的時候執(zhí)行,且只執(zhí)行一次;靜態(tài)代碼塊是在內存中開辟的一塊公共區(qū)域,類的多個實例共享的區(qū)域,任何該類的實例對該區(qū)域的操作都對所有所有該類的實例對該區(qū)域的操作都是生效的。