靜態代碼塊、構造代碼塊、構造函數的區別

    首先,靜態代碼塊,構造代碼塊,和構造函數都存在於一個類中,只不過,他們執行的前後順序和執行的次數不一樣。java

      靜態代碼塊,只執行一次,好比,當你想要建立10個對象時,當建立第一個對象時,執行一次,而後當你繼續建立剩餘的對象時,這個靜態代碼塊就不會被執行了。函數

      而構造代碼塊與構造函數的異同點:  相同點:每建立一個對象,構造代碼塊和構造函數都執行一次,不一樣點:執行的順序不一樣,先執行構造代碼塊,再執行構造方法。code

public class statictest {
	
	//構造代碼塊
	{
		System.out.println("我是構造代碼塊1");
	}
	
	//靜態構造代碼塊
	static{
		System.out.println("我是靜態構造代碼塊1");
	}
	
	//構造函數
	statictest() {
		System.out.println("我是構造函數");
	}
	
	//構造代碼塊
	{
		System.out.println("我是構造代碼塊2");
	}
	
	//靜態構造代碼塊
	static{
		System.out.println("我是靜態構造代碼塊2");
	}
	
	public static void main(String[] args) {
		//第一次建立對象
		new statictest();
		System.out.println("-------------------------------------------");
		//第二次建立對象
		new statictest();
	}
}

    結果以下:對象

我是靜態構造代碼塊1
我是靜態構造代碼塊2
我是構造代碼塊1
我是構造代碼塊2
我是構造函數
-------------------------------------------
我是構造代碼塊1
我是構造代碼塊2
我是構造函數
 class

相關文章
相關標籤/搜索