【java】静态代码块
靜態(tài)代碼塊
格式:
static
{
?? 靜態(tài)代碼塊中的執(zhí)行語(yǔ)句
}
特點(diǎn):
隨著類的加載而執(zhí)行,只執(zhí)行一次,用于給類進(jìn)行初始化,并優(yōu)先于主函數(shù)執(zhí)行
考慮如下java語(yǔ)句
輸出結(jié)果為:
b
c
a????? <==雖然有兩個(gè)調(diào)用StaticCode的語(yǔ)句,但是因?yàn)槠渲兄话o態(tài)代碼塊,而靜態(tài)代碼塊只執(zhí)行
????????? 一次,所以只輸出一個(gè)a
end
只有涉及到類中的內(nèi)容的時(shí)候,類才會(huì)加載,靜態(tài)代碼塊才會(huì)執(zhí)行
StaticCode m = null;?? <==類沒(méi)有被加載
s = new StaticCode();? <==類被加載了,因?yàn)橛玫搅祟愔械臉?gòu)造函數(shù)StaticCode(),所以靜態(tài)代碼塊
????????????????????????? 會(huì)被執(zhí)行
所以判斷一個(gè)類有沒(méi)有被加載,可以用靜態(tài)代碼塊來(lái)驗(yàn)證
class?StaticCode {StaticCode(){System.out.println("c");}static{System.out.println("a");????????????I}{System.out.println("b");????????????II}StaticCode(int?x){System.out.println("hah");??????????III}public?static?void?test(){System.out.println("succeed");} } public?class?Demo?{public?static?void?main(String[]?args){new?StaticCode(5);}}I??? -----? 靜態(tài)代碼塊給類進(jìn)行初始化
II?? -----? 構(gòu)造代碼塊給對(duì)象進(jìn)行初始化
III? -----? 構(gòu)造函數(shù)給對(duì)應(yīng)對(duì)象進(jìn)行初始化
輸出結(jié)果:
a
b
hah
注意:靜態(tài)代碼塊只可以訪問(wèn)靜態(tài)變量
????? 構(gòu)造代碼塊可以訪問(wèn)到
轉(zhuǎn)載于:https://blog.51cto.com/caoyue/1620598
總結(jié)
以上是生活随笔為你收集整理的【java】静态代码块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C/C++中传值和传地址(引用)
- 下一篇: 【转】简单的java缓存实现