全局變量初始化為0 如何初始化一個(gè)類(lèi)中的靜態(tài)成員變量?
如何初始化一個(gè)類(lèi)中的靜態(tài)成員變量?如果我們不考慮父類(lèi),我們可以先進(jìn)行靜態(tài)初始化,然后進(jìn)行非靜態(tài)初始化。靜態(tài)初始化包括靜態(tài)成員變量和靜態(tài)塊的初始化。實(shí)際上,靜態(tài)塊在編譯期間是集中的。非靜態(tài)初始化包括非靜
如何初始化一個(gè)類(lèi)中的靜態(tài)成員變量?
如果我們不考慮父類(lèi),我們可以先進(jìn)行靜態(tài)初始化,然后進(jìn)行非靜態(tài)初始化。
靜態(tài)初始化包括靜態(tài)成員變量和靜態(tài)塊的初始化。實(shí)際上,靜態(tài)塊在編譯期間是集中的。
非靜態(tài)初始化包括非靜態(tài)成員變量初始化、非靜態(tài)塊和構(gòu)造方法,編譯后集中在構(gòu)造方法中。
如果沒(méi)有相互通話,那就非常簡(jiǎn)單了。首先,靜態(tài)初始化。如果在靜態(tài)初始化過(guò)程中調(diào)用了后者呢?!你可以編寫(xiě)一個(gè)代碼來(lái)測(cè)試它:
輸出:
你可以先看到它確實(shí)是靜態(tài)初始化,但是中間有對(duì)構(gòu)造方法的調(diào)用。
雖然編譯器不報(bào)告錯(cuò)誤,但此調(diào)用實(shí)際上是有風(fēng)險(xiǎn)的。
由于靜態(tài)成員變量(如果已設(shè)置)在初始化之前調(diào)用類(lèi)構(gòu)造函數(shù)(假設(shè)存在依賴(lài)關(guān)系),因此該過(guò)程實(shí)際上是不可控制的。
看看這個(gè)例子:你能想象這種輸出嗎?
因此,如果必須在靜態(tài)初始化過(guò)程中調(diào)用此類(lèi)的構(gòu)造函數(shù)。
一定要注意初始化順序,準(zhǔn)確到語(yǔ)句。