Java面向物件——程式碼塊
阿新 • • 發佈:2018-12-17
程式碼塊主要就是{}花括號括起來的程式碼;
主要分為 普通程式碼塊、構造塊、靜態程式碼塊以及同步程式碼塊四類;
1.普通程式碼塊:花括號括起來的程式碼塊
package Hello;
public class Test {
public static void main(String[] args) {
int a=1;
{
a=2;
System.out.println("靜態程式碼塊");
}
System.out.println("a="+a);
}
}
輸出結果:
靜態程式碼塊
a=2
2.構造塊:構造塊作用就是擴充套件構造器功能 每次例項化物件都會執行構造塊裡的內容:
package Hello; public class Test { { System.out.println("構造塊!"); } Test(){ System.out.println("構造方法一"); } Test(int i){ System.out.println("構造方法二"); } Test(int i,int j){ System.out.println("構造方法三"); } public static void main(String[] args) { Test t1=new Test();//也可以直接寫成new Test();匿名類 Test t2=new Test(1);//也可以直接寫成new Test(1);匿名類 Test t3=new Test(1,2);//也可以直接寫成new Test(1,2);匿名類 } }
結果為:
構造塊!
構造方法一
構造塊!
構造方法二
構造塊!
構造方法三
可以看到,每次呼叫構造方法時,都會首先呼叫構造塊裡面的內容!
3.靜態程式碼塊:{}花括號前加static修飾詞,在類載入的時候執行,而且僅僅只執行一次
package Hello; public class Test { static{ System.out.println("靜態程式碼塊!"); } { System.out.println("構造塊!"); } Test(){ System.out.println("構造方法一"); } Test(int i){ System.out.println("構造方法二"); } Test(int i,int j){ System.out.println("構造方法三"); } public static void main(String[] args) { Test t1=new Test();//也可以直接寫成new Test();匿名類 Test t2=new Test(1);//也可以直接寫成new Test(1);匿名類 Test t3=new Test(1,2);//也可以直接寫成new Test(1,2);匿名類 } }
輸出結果為:
靜態程式碼塊!
構造塊!
構造方法一
構造塊!
構造方法二
構造塊!
構造方法三
可以看到靜態程式碼塊僅僅執行了一次!而且在類載入的時候就執行了,也就是說在例項化物件之前就已經執行!
package Hello;
public class Test {
static{
System.out.println("靜態程式碼塊!");
}
{
System.out.println("構造塊!");
}
Test(){
System.out.println("構造方法一");
}
Test(int i){
System.out.println("構造方法二");
}
Test(int i,int j){
System.out.println("構造方法三");
}
public static void main(String[] args) {
}
}
主函式裡面沒有例項化物件時,仍然可以執行,輸出結果為:
靜態程式碼塊!