static{...}是靜態(tài)塊,而只有{...}的是叫做構(gòu)造塊。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、巨野網(wǎng)站維護、網(wǎng)站推廣。
靜態(tài)塊在一個程序里面只執(zhí)行一次;
而構(gòu)造塊是,只要建立一個對象,構(gòu)造代碼塊都會執(zhí)行一次。
靜態(tài)塊優(yōu)先于主方法的執(zhí)行,靜態(tài)塊優(yōu)先于構(gòu)造快,然后是構(gòu)造方法的執(zhí)行,而且只執(zhí)行一次!
所以輸出結(jié)果是:
static
block
instance1
block
instance2
Java靜態(tài)代碼塊的作用:Java靜態(tài)代碼塊中的代碼會在類加載JVM時運行,且只被執(zhí)行一次,也就是說這些代碼不需要實例化類就能夠被調(diào)用。一般情況下,如果有些代碼必須在項目啟動的時候就執(zhí)行的時候,就需要使用靜態(tài)代碼塊。
Java靜態(tài)代碼塊的用法:一個類可以使用不包含在任何方法體中的靜態(tài)代碼塊,當類被載入時,靜態(tài)代碼塊被執(zhí)行,且只被執(zhí)行一次,靜態(tài)塊常用來執(zhí)行類屬性的初始化。例如:
static
{
int a=0;
}
您好,提問者:
首先靜態(tài)代碼塊的作用是,只執(zhí)行一次,不管是new還是直接類名。
構(gòu)造函數(shù)用于傳遞或者初始化,如果想要這個類的方法或者變量,必須new初始化。
靜態(tài)代碼塊:
用于初始化一些操作,例如數(shù)據(jù)庫連接、配置文件讀取等。
構(gòu)造函數(shù):
用于new
xxx(值),如果一個類不想被new可以把構(gòu)造方法寫為private類型。
java中有四種代碼塊
1.普通代碼塊:直接在{}中出現(xiàn)的。
2.構(gòu)造代碼塊:在構(gòu)造函數(shù)的{}中出現(xiàn)的。
3.靜態(tài)代碼塊:static{}中出現(xiàn)的。
4.同步代碼塊:多線程中出現(xiàn)。
//構(gòu)造塊:直接在類中定義且沒有加static關(guān)鍵字的代碼塊稱為{}構(gòu)造代碼塊。構(gòu)造代碼塊在創(chuàng)建對象時被調(diào)用,每次創(chuàng)建對象都會被調(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)造方法*/