類加載的時(shí)候就會(huì)去執(zhí)行靜態(tài)代碼塊的內(nèi)容。
創(chuàng)新互聯(lián)于2013年成立,先為尉氏等服務(wù)建站,尉氏等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為尉氏企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
比如說(shuō):
寫連接數(shù)據(jù)庫(kù)的那些內(nèi)容時(shí),
經(jīng)常有classforName("XXX"),用于加載一些東西,這些東西就可以寫在靜態(tài)代碼塊中。
還有一些,你想讓類加載時(shí)就執(zhí)行的程序也可以放在里面。
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;
}
先說(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ì)象的。
靜態(tài)代碼塊:只要一用到某個(gè)類,那么這個(gè)類的靜態(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() 是與類同名、沒(méi)有返回值的方法,也就是構(gòu)造方法。
構(gòu)造方法的作用是用來(lái)初始化一個(gè)對(duì)象的。比如你可以在里面寫
i
=
2;
那么當(dāng)你 Dog
d
=
new
Dog()執(zhí)行這段代碼的時(shí)候,是這樣的:
首先
i
=
;
然后執(zhí)行static 靜態(tài)代碼塊,此時(shí)i=
1;
最后執(zhí)行public
Dog();
i
=
2;
一 般情況下,如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行的時(shí)候,需要使用靜態(tài)代碼塊,這種代碼是主動(dòng)執(zhí)行的
(1)在Java里,可以定義一個(gè)不需要?jiǎng)?chuàng)建對(duì)象的方法,這種方法就是靜態(tài)方法。
(2)靜態(tài)變量是屬于整個(gè)類的變量而不是屬于某個(gè)對(duì)象的。
(3)一個(gè)類可以使用不包含在任何方法體中的靜態(tài)代碼塊,當(dāng)類被載入時(shí),靜態(tài)代碼塊被執(zhí)行,且只被執(zhí)行一次,靜態(tài)塊常用來(lái)執(zhí)行類屬性的初始化。
靜態(tài)代碼塊:有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行,這種代碼是主動(dòng)執(zhí)行的(當(dāng)類被載入時(shí),靜態(tài)代碼塊被執(zhí)行,且只被執(zhí)行一次,靜態(tài)塊常用來(lái)執(zhí)行類屬性的初始化)
靜態(tài)方法:需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化,在不創(chuàng)建對(duì)象的情況下,這種代碼是被動(dòng)執(zhí)行的(靜態(tài)方法在類加載的時(shí)候就已經(jīng)加載
可以用類名直接調(diào)用)。
兩者的區(qū)別是:靜態(tài)代碼塊是自動(dòng)執(zhí)行的,
靜態(tài)方法是被調(diào)用的時(shí)候才執(zhí)行的.
文章標(biāo)題:java類中的靜態(tài)代碼塊,java靜態(tài)代碼塊和非靜態(tài)代碼塊
文章網(wǎng)址:http://muchs.cn/article18/hcjcdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、品牌網(wǎng)站制作、小程序開(kāi)發(fā)、品牌網(wǎng)站建設(shè)、用戶體驗(yàn)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)