靜態(tài)代碼塊是在類加載進(jìn)jvm時(shí)類實(shí)例化之前運(yùn)行的,比如業(yè)務(wù)場(chǎng)景有這種類初始化時(shí)需要加載許多資源,在運(yùn)行實(shí)例化類的時(shí)候會(huì)影響程序響應(yīng)時(shí)間,所以就在項(xiàng)目啟動(dòng)的時(shí)候加載類的時(shí)候就初始化了.非靜態(tài)代碼塊是在類實(shí)例化的時(shí)候才會(huì)運(yùn)行,所以靜態(tài)代碼塊的執(zhí)行一定在非靜態(tài)代碼塊執(zhí)行之前執(zhí)行.至于你上面的第一個(gè)問(wèn)題要看具體業(yè)務(wù)場(chǎng)景和需求,賦值都可以實(shí)現(xiàn).第二個(gè)問(wèn)題,可能是寫(xiě)那句代碼的人要看程序加載后有沒(méi)有執(zhí)行那部分代碼而加上的,知道了靜態(tài)代碼塊和非靜態(tài)代碼塊的本質(zhì)區(qū)別,為什么那么做和目的你就應(yīng)該知道了.
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、岷縣網(wǎng)站維護(hù)、網(wǎng)站推廣。
Java靜態(tài)代碼塊的作用:Java靜態(tài)代碼塊中的代碼會(huì)在類加載JVM時(shí)運(yùn)行,且只被執(zhí)行一次,也就是說(shuō)這些代碼不需要實(shí)例化類就能夠被調(diào)用。一般情況下,如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行的時(shí)候,就需要使用靜態(tài)代碼塊。
Java靜態(tài)代碼塊的用法:一個(gè)類可以使用不包含在任何方法體中的靜態(tài)代碼塊,當(dāng)類被載入時(shí),靜態(tài)代碼塊被執(zhí)行,且只被執(zhí)行一次,靜態(tài)塊常用來(lái)執(zhí)行類屬性的初始化。例如:
static
{
int
a=0;
}
您好,提問(wèn)者:
首先靜態(tài)代碼塊的作用是,只執(zhí)行一次,不管是new還是直接類名。
構(gòu)造函數(shù)用于傳遞或者初始化,如果想要這個(gè)類的方法或者變量,必須new初始化。
靜態(tài)代碼塊:
用于初始化一些操作,例如數(shù)據(jù)庫(kù)連接、配置文件讀取等。
構(gòu)造函數(shù):
用于new
xxx(值),如果一個(gè)類不想被new可以把構(gòu)造方法寫(xiě)為private類型。
先說(shuō)執(zhí)行順序:我們?cè)趎ew一個(gè)對(duì)象時(shí),如果類還沒(méi)加載,就需要先將類加載到內(nèi)存,此時(shí)就會(huì)執(zhí)行靜態(tài)代碼塊,在創(chuàng)建對(duì)象時(shí),是先執(zhí)行代碼塊,然后執(zhí)行構(gòu)造器。所以靜態(tài)代碼塊、代碼塊、構(gòu)造器的執(zhí)行順序是:靜態(tài)代碼塊→代碼塊→構(gòu)造器。
再說(shuō)作用:靜態(tài)代碼塊是用于初始化類的(在加載類時(shí)執(zhí)行,只執(zhí)行一次),代碼塊是用于初始化對(duì)象的(在創(chuàng)建對(duì)象時(shí)執(zhí)行,每次創(chuàng)建對(duì)象時(shí)都執(zhí)行),構(gòu)造器是用于創(chuàng)建對(duì)象的。
//構(gòu)造塊:直接在類中定義且沒(méi)有加static關(guān)鍵字的代碼塊稱為{}構(gòu)造代碼塊。構(gòu)造代碼塊在創(chuàng)建對(duì)象時(shí)被調(diào)用,每次創(chuàng)建對(duì)象都會(huì)被調(diào)用,并且構(gòu)造代碼塊的執(zhí)行次序優(yōu)先于類構(gòu)造函數(shù)。
public class CodeBlock02
{
{
System.out.println("第一代碼塊");
}
public CodeBlock02(){
System.out.println("構(gòu)造方法");
}
{
System.out.println("第二構(gòu)造塊");
}
public static void main(String[] args){
new CodeBlock02();
new CodeBlock02();
new CodeBlock02();
}
}
/**
執(zhí)行結(jié)果:
第一代碼塊
第二構(gòu)造塊
構(gòu)造方法
第一代碼塊
第二構(gòu)造塊
構(gòu)造方法
第一代碼塊
第二構(gòu)造塊
構(gòu)造方法*/
//構(gòu)造塊:直接在類中定義且沒(méi)有加static關(guān)鍵字的代碼塊稱為{}構(gòu)造代碼塊。構(gòu)造代碼塊在創(chuàng)建對(duì)象時(shí)被調(diào)用,每次創(chuàng)建對(duì)象都會(huì)被調(diào)用,并且構(gòu)造代碼塊的執(zhí)行次序優(yōu)先于類構(gòu)造函數(shù)。
public class CodeBlock02
{
{
System.out.println("第一代碼塊");
}
public CodeBlock02(){
System.out.println("構(gòu)造方法");
}
{
System.out.println("第二構(gòu)造塊");
}
public static void main(String[] args){
new CodeBlock02();
new CodeBlock02();
new CodeBlock02();
}
}
/**
執(zhí)行結(jié)果:
第一代碼塊
第二構(gòu)造塊
構(gòu)造方法
第一代碼塊
第二構(gòu)造塊
構(gòu)造方法
第一代碼塊
第二構(gòu)造塊
構(gòu)造方法*/