代碼塊
所謂的代碼塊是指使用“{}”括起來的一段代碼砸紊,根據(jù)位置不同传于,代碼塊可以分為構(gòu)造代碼塊、構(gòu)造函數(shù)醉顽、靜態(tài)代碼塊沼溜。
- 靜態(tài)代碼塊:用staitc聲明,jvm加載類時(shí)執(zhí)行游添,僅執(zhí)行一次
- 構(gòu)造代碼塊:類中直接用 {} 定義系草,每一次創(chuàng)建對象時(shí)執(zhí)行。
- 構(gòu)造函數(shù):創(chuàng)建對象時(shí)執(zhí)行
執(zhí)行順序優(yōu)先級(jí):靜態(tài)代碼塊 > 構(gòu)造代碼塊 > 構(gòu)造函數(shù)唆涝。
靜態(tài)代碼塊
static {
System.out.println(" I am 靜態(tài)代碼塊");
}
- 靜態(tài)代碼塊優(yōu)先于主方法執(zhí)行找都,而在類中定義的靜態(tài)代碼塊會(huì)優(yōu)先于構(gòu)造塊執(zhí)行,而且不管有多少個(gè)對象產(chǎn)生廊酣,靜態(tài)代碼塊只執(zhí)行一次能耻。
- 靜態(tài)代碼塊其實(shí)就是給類初始化的,而構(gòu)造代碼塊時(shí)給對象初始化的。
- 一個(gè)類中可以有多個(gè)靜態(tài)代碼塊
構(gòu)造代碼塊
{
System.out.println(" I am 構(gòu)造函數(shù)");
}
- 構(gòu)造代碼塊的作用是給對象進(jìn)行初始化晓猛。
- 對象一建立就運(yùn)行構(gòu)造代碼塊饿幅,而且優(yōu)先于構(gòu)造函數(shù)執(zhí)行
- 構(gòu)造代碼塊與構(gòu)造函數(shù)的區(qū)別是:構(gòu)造代碼塊是給所有對象進(jìn)行統(tǒng)一初始化,而構(gòu)造函數(shù)是給對應(yīng)的對象初始化戒职,因?yàn)闃?gòu)造函數(shù)是可以多個(gè)的诫睬,運(yùn)行哪個(gè)構(gòu)造函數(shù)就會(huì)建立什么樣的對象,但無論建立哪個(gè)對象帕涌,都會(huì)先執(zhí)行相同的構(gòu)造代碼塊。也就是說续徽,構(gòu)造代碼塊中定義的是不同對象共性的初始化內(nèi)容蚓曼。