Java靜態(tài)代碼塊的作用:Java靜態(tài)代碼塊中的代碼會(huì)在類(lèi)加載JVM時(shí)運(yùn)行,且只被執(zhí)行一次,也就是說(shuō)這些代碼不需要實(shí)例化類(lèi)就能夠被調(diào)用。一般情況下,如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行的時(shí)候,就需要使用靜態(tài)代碼塊。
創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供阿拉善盟網(wǎng)站建設(shè)、阿拉善盟做網(wǎng)站、阿拉善盟網(wǎng)站設(shè)計(jì)、阿拉善盟網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、阿拉善盟企業(yè)網(wǎng)站模板建站服務(wù),10年阿拉善盟做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Java靜態(tài)代碼塊的用法:一個(gè)類(lèi)可以使用不包含在任何方法體中的靜態(tài)代碼塊,當(dāng)類(lèi)被載入時(shí),靜態(tài)代碼塊被執(zhí)行,且只被執(zhí)行一次,靜態(tài)塊常用來(lái)執(zhí)行類(lèi)屬性的初始化。例如:
static
{
int
a=0;
}
靜態(tài)代碼塊:只要一用到某個(gè)類(lèi),那么這個(gè)類(lèi)的靜態(tài)代碼塊就先執(zhí)行,比如:
public?class?Dog(){
int?i?=?0;
static?{
i?=?1;?
}??
public?Dog(){
i?=?2;?
}????
}
當(dāng)你new?一個(gè)Dog()對(duì)象時(shí),首先i= 1?會(huì)執(zhí)行,然后才執(zhí)行 public?Dog(){}這個(gè)方法。
pulic Dog()?是與類(lèi)同名、沒(méi)有返回值的方法,也就是構(gòu)造方法。
構(gòu)造方法的作用是用來(lái)初始化一個(gè)對(duì)象的。比如你可以在里面寫(xiě) i = 2;
那么當(dāng)你?Dog d = new Dog()執(zhí)行這段代碼的時(shí)候,是這樣的:
首先 i = 0 ;
然后執(zhí)行static?靜態(tài)代碼塊,此時(shí)i= 1;
最后執(zhí)行public Dog();? i = 2;
靜態(tài)代碼塊:有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行,這種代碼是主動(dòng)執(zhí)行的(當(dāng)類(lèi)被載入時(shí),靜態(tài)代碼塊被執(zhí)行,且只被執(zhí)行一次,靜態(tài)塊常用來(lái)執(zhí)行類(lèi)屬性的初始化)
靜態(tài)方法:需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化,在不創(chuàng)建對(duì)象的情況下,這種代碼是被動(dòng)執(zhí)行的(靜態(tài)方法在類(lèi)加載的時(shí)候就已經(jīng)加載
可以用類(lèi)名直接調(diào)用)。
兩者的區(qū)別是:靜態(tài)代碼塊是自動(dòng)執(zhí)行的,
靜態(tài)方法是被調(diào)用的時(shí)候才執(zhí)行的.
首先執(zhí)行父類(lèi)靜態(tài)的內(nèi)容,父類(lèi)靜態(tài)的內(nèi)容執(zhí)行完畢后,接著去執(zhí)行子類(lèi)的靜態(tài)的內(nèi)容,當(dāng)子類(lèi)的靜態(tài)內(nèi)容執(zhí)行完畢之后,再去看父類(lèi)有沒(méi)有非靜態(tài)代碼塊,如果有就執(zhí)行父類(lèi)的非靜態(tài)代碼塊,父類(lèi)的非靜態(tài)代碼塊執(zhí)行完畢,接著執(zhí)行父類(lèi)的構(gòu)造方法;父類(lèi)的構(gòu)造方法執(zhí)行完畢之后,它接著去看子類(lèi)有沒(méi)有非靜態(tài)代碼塊,如果有就執(zhí)行子類(lèi)的非靜態(tài)代碼塊。子類(lèi)的非靜態(tài)代碼塊執(zhí)行完畢再去執(zhí)行子類(lèi)的構(gòu)造方法。