1. 程式人生 > >java-程式碼塊以及程式碼塊執行順序

java-程式碼塊以及程式碼塊執行順序

程式碼塊:
用{}括起來的程式碼。
根據{}的位置可以分為
區域性程式碼塊:方法中,區域性位置,作用:限定變數作用範圍和生命週期。

構造程式碼塊:在類中方法外(成員位置),用{}括起來的程式碼。

每次呼叫構造方法執行前,都會執行構造程式碼塊,

作用:把類中不同構造方法中相同的部分提取出來定義到構造程式碼塊中,以後無論呼叫哪個構造方法都會執行相同操作。可以理解對物件初始化。

靜態程式碼塊:在類中方法外(成員位置),用{}括起來,用static修飾。作用:給類進行初始化。

程式碼塊執行順序:
靜態程式碼塊》構造程式碼塊》構造方法

靜態程式碼塊:只執行一次

構造程式碼塊:每次建立該類物件,呼叫構造方法就執行,先於構造方法。

下面通過一個案例進行解析:

package day08;

public class DaiMaKuai {
	static {
		System.out.println("大家好我是靜態程式碼塊!");
	}
	
	{
		
		System.out.println("大家好我是構造程式碼塊!");

	}
	
	public DaiMaKuai(){
		System.out.println("大家好我是構造方法!");

	}

}

入口類:

package day08;

public class DaiMaKuaiDemo {

	static {
		System.out.println("河南科技大學!");
	}
	public static void main(String[] args) {
		System.out.println("洛陽牡丹甲天下!");
		
		//建立DaiMaKuai類物件
		System.out.println("-------------------------");
		DaiMaKuai dmk = new DaiMaKuai();
		System.out.println("-------------------------");
		DaiMaKuai dmk1 = new DaiMaKuai();

	}

}
輸出:

河南科技大學!
洛陽牡丹甲天下!
-------------------------
大家好我是靜態程式碼塊!
大家好我是構造程式碼塊!
大家好我是構造方法!
-------------------------
大家好我是構造程式碼塊!
大家好我是構造方法!

解析:

通過輸出結果可以看出,程式最先載入類執行入口類中的靜態程式碼塊列印輸出“河南科技大學

然後接著執行main方法列印後面的程式語句“洛陽牡丹甲天下”,

接著建立DaiMaKuai類的物件載入類執行該類中的靜態程式碼塊輸出“大家好我是靜態程式碼塊!”

接著執行構造程式碼塊輸出“大家好我是構造程式碼塊!”

最後執行構造方法

輸出“大家好我是構造方法!”,

接著又建立一個物件,注意這時靜態程式碼塊不再執行(只加載一次)

直接執行構造程式碼塊輸出“大家好我是構造程式碼塊!”

最後執行構造方法輸出“大家好我是構造方法!