十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
類加載的時(shí)候就會(huì)去執(zhí)行靜態(tài)代碼塊的內(nèi)容。
成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、達(dá)孜網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為達(dá)孜等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
比如說(shuō):
寫連接數(shù)據(jù)庫(kù)的那些內(nèi)容時(shí),
經(jīng)常有classforName("XXX"),用于加載一些東西,這些東西就可以寫在靜態(tài)代碼塊中。
還有一些,你想讓類加載時(shí)就執(zhí)行的程序也可以放在里面。
相同點(diǎn):都是在JVM加載類時(shí)且在構(gòu)造方法執(zhí)行之前執(zhí)行,在類中都可以定義多個(gè),
一般在代碼塊中對(duì)一些static變量進(jìn)行賦值。
不同點(diǎn):靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行(靜態(tài)代碼塊—非靜態(tài)代碼塊—構(gòu)造方法)。
靜態(tài)代碼塊只在第一次new執(zhí)行一次,之后不再執(zhí)行,而非靜態(tài)代碼塊在每new
一次就執(zhí)行一次。非靜態(tài)代碼塊可在普通方法中定義(不過(guò)作用不大);而靜態(tài)代碼塊不行。
例:
//普通類
public class PuTong {
public PuTong(){
System.out.print("默認(rèn)構(gòu)造方法!--");
}
//非靜態(tài)代碼塊
{
System.out.print("非靜態(tài)代碼塊!--");
}
//靜態(tài)代碼塊
static{
System.out.print("靜態(tài)代碼塊!--");
}
public static void test(){
{
System.out.println("普通方法中的代碼塊!");
}
}
}
//測(cè)試類
public class TestClass {
/**
* 區(qū)別兩次new靜態(tài)與非靜態(tài)代碼塊執(zhí)行情況
*/
public static void main(String[] args) {
PuTong c1 = new PuTong();
c1.test();
PuTong c2 = new PuTong();
c2.test();
}
}
/*
運(yùn)行輸出結(jié)果是:
靜態(tài)代碼塊!--非靜態(tài)代碼塊!--默認(rèn)構(gòu)造方法!--普通方法中的代碼塊!
非靜態(tài)代碼塊!--默認(rèn)構(gòu)造方法!--普通方法中的代碼塊!
*/
如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行的時(shí)候,需要使用靜態(tài)代碼塊,這種代碼是主動(dòng)執(zhí)行的;需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化,在不創(chuàng)建對(duì)象的情 況下,其他程序來(lái)調(diào)用的時(shí)候,需要使用靜態(tài)方法,這種代碼是被動(dòng)執(zhí)行的. 靜態(tài)方法在類加載的時(shí)候 就已經(jīng)加載 可以用類名直接調(diào)用
。
與非靜態(tài)代碼區(qū)別:
靜態(tài)代碼塊,在虛擬機(jī)加載類的時(shí)候就會(huì)加載執(zhí)行,而且只執(zhí)行一次;
非靜態(tài)代碼塊,在創(chuàng)建對(duì)象的時(shí)候(即new一個(gè)對(duì)象的時(shí)候)執(zhí)行,每次創(chuàng)建對(duì)象都會(huì)執(zhí)行一次
例:
//普通類
public class PuTong {
public PuTong(){
System.out.print("默認(rèn)構(gòu)造方法!--");
}
//非靜態(tài)代碼塊
{
System.out.print("非靜態(tài)代碼塊!--");
}
//靜態(tài)代碼塊
static{
System.out.print("靜態(tài)代碼塊!--");
}
public static void test(){
{
System.out.println("普通方法中的代碼塊!");
}
}
}
擴(kuò)展資料:
Java是一門面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程 。
Java具有簡(jiǎn)單性、面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性 。
參考資料:百度百科-網(wǎng)頁(yè)鏈接
static{},這段
代碼
名為
靜態(tài)
代碼塊,
{}中的內(nèi)容會(huì)在該類加載時(shí)執(zhí)行,作用是給全局的
靜態(tài)變量
,或者
常量
導(dǎo)入初始值.可以調(diào)用其他static方法,目的都是賦值.System.out.printlt(x=3);可以執(zhí)行,是因?yàn)樵?/p>
括號(hào)
中給x賦值了.
如果你想更加了解靜態(tài)代碼塊的作用與
含義
,百度一下靜態(tài)代碼塊就知道了.這里就不多做解釋了.
一般情況下,如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行的時(shí)候,需要使用靜態(tài)代碼塊,這種代碼是主動(dòng)執(zhí)行的;需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化,在不創(chuàng)建對(duì)象的情況下,其他程序來(lái)調(diào)用的時(shí)候,需要使用靜態(tài)方法,這種代碼是被動(dòng)執(zhí)行的.
兩者的區(qū)別就是:靜態(tài)代碼塊是自動(dòng)執(zhí)行的;
靜態(tài)方法是被調(diào)用的時(shí)候才執(zhí)行的.
作用:靜態(tài)代碼塊可用來(lái)初始化一些項(xiàng)目最常用的變量或?qū)ο?靜態(tài)方法可用作不創(chuàng)建對(duì)象也可能需要執(zhí)行的代碼.