1. 程式人生 > >Java面向物件——程式碼塊

Java面向物件——程式碼塊

程式碼塊主要就是{}花括號括起來的程式碼;

主要分為 普通程式碼塊、構造塊、靜態程式碼塊以及同步程式碼塊四類;

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) {
		
	}
}

主函式裡面沒有例項化物件時,仍然可以執行,輸出結果為:

靜態程式碼塊!