Java中的靜態(tài)初始化和非靜態(tài)初始化

文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡書

1. Java中的初始化

Java與C++的一個(gè)不同之處在于,Java不僅有構(gòu)造函數(shù)麻掸,還有一個(gè)“初始化塊”(Initialization Block)的概念。Java中的初始化塊在創(chuàng)建Java對(duì)象時(shí)隱式執(zhí)行蛛蒙,并且是在構(gòu)造函數(shù)之前執(zhí)行酝蜒。

2. 靜態(tài)初始化

// 定義
static {
    ...
}

靜態(tài)初始化塊執(zhí)行的優(yōu)先級(jí)高于非靜態(tài)初始化塊咙俩,在對(duì)象裝載到JVM中時(shí)執(zhí)行一次弦悉,僅能初始化類成員變量窒典,即static修飾的數(shù)據(jù)成員蟆炊。

3. 非靜態(tài)初始化

// 定義
{
    ...
}

非靜態(tài)初始化塊在每個(gè)對(duì)象生成時(shí)都會(huì)被執(zhí)行一次稽莉,它可以初始化類的實(shí)例變量。非靜態(tài)初始化塊在構(gòu)造函數(shù)之前執(zhí)行涩搓。

4. Demo

  • Example
class Test {
    
    static {
        System.out.println("Run static initailization block.");
    }
    
    {
        System.out.println("Run nonstatic initailization block.");
    }
    
    public Test() {
        System.out.println("Run Test constructor.");
    }
    
    public static void main(String[] args) {
        Test t = new Test();
    }
}
  • Result
Run static initailization block.
Run nonstatic initailization block.
Run Test constructor.

5. 總結(jié)

從某種程度上來看污秆,初始化塊是構(gòu)造器的補(bǔ)充劈猪,初始化塊總是在構(gòu)造器之前執(zhí)行。初始化塊是一段固定執(zhí)行的代碼良拼,它不能接受任何參數(shù)战得。因此初始化塊對(duì)同一個(gè)類的所有對(duì)象所進(jìn)行的初始化處理完全相同。如果有一段初始化處理代碼對(duì)所有的對(duì)象完全相同庸推,且無需接受任何參數(shù)常侦,就可以把這段初始化處理代碼提取到初始化塊中。通過把多個(gè)構(gòu)造器中的相同代碼提取到初始化塊中定義贬媒,能更好地提高初始化代碼的復(fù)用聋亡。靜態(tài)初始化塊是類相關(guān)的,系統(tǒng)將在類加載時(shí)執(zhí)行靜態(tài)初始化塊际乘,而不是在創(chuàng)建對(duì)象時(shí)才執(zhí)行坡倔,因此靜態(tài)初始化塊總是比非靜態(tài)初始化塊先執(zhí)行。用途:例如在JNI調(diào)用時(shí)脖含,需要加載動(dòng)態(tài)鏈接庫罪塔,就可以在靜態(tài)代碼塊中加載。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末养葵,一起剝皮案震驚了整個(gè)濱河市征堪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌关拒,老刑警劉巖请契,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異夏醉,居然都是意外死亡爽锥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門畔柔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氯夷,“玉大人,你說我怎么就攤上這事靶擦∪迹” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵玄捕,是天一觀的道長踩蔚。 經(jīng)常有香客問我,道長枚粘,這世上最難降的妖魔是什么馅闽? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上福也,老公的妹妹穿的比我還像新娘局骤。我一直安慰自己,他們只是感情好暴凑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布峦甩。 她就那樣靜靜地躺著,像睡著了一般现喳。 火紅的嫁衣襯著肌膚如雪凯傲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天嗦篱,我揣著相機(jī)與錄音泣洞,去河邊找鬼。 笑死默色,一個(gè)胖子當(dāng)著我的面吹牛球凰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腿宰,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼呕诉,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了吃度?” 一聲冷哼從身側(cè)響起甩挫,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎椿每,沒想到半個(gè)月后伊者,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡间护,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年亦渗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汁尺。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡法精,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痴突,到底是詐尸還是另有隱情搂蜓,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布辽装,位于F島的核電站帮碰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拾积。R本人自食惡果不足惜殉挽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一丰涉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧此再,春花似錦、人聲如沸玲销。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贤斜。三九已至策吠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瘩绒,已是汗流浹背猴抹。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锁荔,地道東北人蟀给。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像阳堕,于是被迫代替她去往敵國和親跋理。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法恬总,類相關(guān)的語法前普,內(nèi)部類的語法,繼承相關(guān)的語法壹堰,異常的語法拭卿,線程的語...
    子非魚_t_閱讀 31,598評(píng)論 18 399
  • 一:java概述:1,JDK:Java Development Kit贱纠,java的開發(fā)和運(yùn)行環(huán)境峻厚,java的開發(fā)工...
    ZaneInTheSun閱讀 2,635評(píng)論 0 11
  • 父類 static 塊 1 執(zhí)行 父類 靜態(tài)成員staticSam1初始化 父類 靜態(tài)成員staticSam2初始...
    YCix閱讀 1,305評(píng)論 0 0
  • 剛才略略擔(dān)心了一下我寫的頁數(shù),其實(shí)谆焊,沒有必要目木,因?yàn)閷?dǎo)師本來說的就是百頁之內(nèi)。所以懊渡,我盡我所能刽射,把我需要說的說清楚,...
    米亞MIA閱讀 147評(píng)論 0 0
  • 1.首先要引入一個(gè)頭文件 2.具體代碼
    YvanLiu閱讀 679評(píng)論 0 0