類加載及所謂靜態(tài)代碼塊先執(zhí)行

經(jīng)常說靜態(tài)代碼塊先執(zhí)行.......原理如下

    public static void main(String[] args) {
        //為什么所謂的靜態(tài)代碼塊先執(zhí)行劣像,是由于加載類<clinit>類構(gòu)造方法乡话,
        //是類級別的,只執(zhí)行一次耳奕,編譯器自動收集類中所有的static變量和static代碼塊
        //中語句合并而成绑青,編譯器收集的順序是由于程序源碼順序決定
//      StaticTest staticTest = new StaticTest();   
    }

如下代碼:static StaticTest st = new StaticTest();位置不同诬像,執(zhí)行的順序依據(jù)類加載的不同而不同

public class StaticTest {
    public static void main(String[] args) {
        staticFunction();
    } 
//    在類的初始化階段需要做的是執(zhí)行類構(gòu)造器<clinit>(),需要指出的是闸婴,
//    類構(gòu)造器本質(zhì)上是編譯器收集所有靜態(tài)語句塊和類變量的賦值語句按語句
//    在源碼中的順序合并生成類構(gòu)造器<clinit>()坏挠。
//    因此,對上述程序而言邪乍,JVM將先執(zhí)行第一條靜態(tài)變量的賦值語句:
//    static StaticTest st = new StaticTest();

    {   
        System.out.println("我是構(gòu)造代碼塊降狠,我剛在前面");
        // 實(shí)例代碼塊
        System.out.println("2");
    }
    //順序(放在 new 靜態(tài)實(shí)例前后)
    static {  
        System.out.println("我是靜態(tài)代碼塊,我剛在后面");
        //靜態(tài)代碼塊
        System.out.println("1");
    }


    StaticTest() {    // 實(shí)例構(gòu)造器
        System.out.println("3");
        System.out.println("a=" + a + ",b=" + b);
    }

    public static void staticFunction() {   // 靜態(tài)方法
        System.out.println("4");
    }

    int a = 110;    // 實(shí)例變量
    static int b = 112;     // 靜態(tài)變量
    
//   static StaticTest st = new StaticTest();
}
  1. 初始化階段是執(zhí)行類構(gòu)造器< clinit >()方法的過程庇楞。< clinit >()方法是由編譯器自動收集類中的所有類變量(也叫靜態(tài)變量)的賦值動作靜態(tài)語句塊static{}中的語句合并產(chǎn)生的榜配。
  2. 編譯器收集的順序是由語句在源文件中出現(xiàn)的順序所決定的
  3. init是對象構(gòu)造器方法,也就是說在程序執(zhí)行 new 一個對象調(diào)用該對象類的 constructor 方法時才會執(zhí)行init方法吕晌,對非靜態(tài)變量初始化蛋褥;而clinit是類構(gòu)造器方法,也就是在jvm進(jìn)行類加載—–驗(yàn)證—-解析—–初始化睛驳,中的初始化階段jvm會調(diào)用clinit方法烙心。
    參考:https://blog.csdn.net/justloveyou_/article/details/72466105
    大佬的文章真的非常棒,強(qiáng)烈推薦乏沸。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淫茵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蹬跃,更是在濱河造成了極大的恐慌匙瘪,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炬转,死亡現(xiàn)場離奇詭異辆苔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門古话,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夜只,“玉大人,你說我怎么就攤上這事锅棕。” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵先煎,是天一觀的道長。 經(jīng)常有香客問我巧涧,道長薯蝎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任谤绳,我火速辦了婚禮占锯,結(jié)果婚禮上袒哥,老公的妹妹穿的比我還像新娘。我一直安慰自己消略,他們只是感情好堡称,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著艺演,像睡著了一般却紧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胎撤,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天晓殊,我揣著相機(jī)與錄音,去河邊找鬼伤提。 笑死挺物,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的飘弧。 我是一名探鬼主播识藤,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼次伶!你這毒婦竟也來了痴昧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤冠王,失蹤者是張志新(化名)和其女友劉穎赶撰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柱彻,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豪娜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哟楷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘤载。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖卖擅,靈堂內(nèi)的尸體忽然破棺而出鸣奔,到底是詐尸還是另有隱情,我是刑警寧澤惩阶,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布挎狸,位于F島的核電站,受9級特大地震影響断楷,放射性物質(zhì)發(fā)生泄漏锨匆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一冬筒、第九天 我趴在偏房一處隱蔽的房頂上張望恐锣。 院中可真熱鬧紊遵,春花似錦、人聲如沸侥蒙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鞭衩。三九已至学搜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間论衍,已是汗流浹背瑞佩。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坯台,地道東北人炬丸。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像蜒蕾,于是被迫代替她去往敵國和親稠炬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 前言 YY:Kitty,我最近在看Thinking in Java 這本書Kitty:喔撤摸?是么毅桃,你不是一直覺得那本...
    LilacZiyun閱讀 5,461評論 12 51
  • Java虛擬機(jī)整體篇幅如下: Java虛擬機(jī)基礎(chǔ)——1Java的內(nèi)存模型Java虛擬機(jī)基礎(chǔ)——2JVM運(yùn)行時數(shù)據(jù)區(qū)...
    隔壁老李頭閱讀 2,779評論 1 16
  • 搜索的時候看了好幾篇文,自己就想記錄一遍准夷,加深一下記憶钥飞,以下是原文的地址,受益匪淺衫嵌。blog.csdn.net/n...
  • 代碼編譯的結(jié)果從本地機(jī)器碼轉(zhuǎn)變?yōu)樽止?jié)碼读宙,是存儲格式發(fā)展的一小步,確實(shí)編譯語言發(fā)展的一大步渐扮。 虛擬機(jī)把描述類的數(shù)據(jù)從...
    胡二囧閱讀 945評論 0 0
  • 翻看所有的手機(jī)照片论悴,發(fā)現(xiàn)好多教堂照,不得不專門給可愛的它們來一篇墓律。 OULU CATHEDRAL 想去體驗(yàn)一下真正...
    靜夜思6820閱讀 342評論 0 1