Java構造函數、構造代碼塊和靜態代碼塊的區別和調用時間


靜態代碼塊:最早執行,被載入內存時執行,只執行一次。沒有名字、參數和返回值,有關鍵字static。
構造代碼塊:執行時間比靜態代碼塊晚,比構造函數早,和構造函數一樣,只在對象初始化的時候運行。沒有名字、參數和返回值。
構造函數:執行時間比構造代碼塊時間晚,也是在對象初始化的時候運行。沒有返回值,構造函數名稱和類名一致。

public class Constructor {

	public static void main(String[] args) {
		System.out.println("創建第一個對象:");
		Test test1 = new Test();
		System.out.println("");
		System.out.println("創建第二個對象:");
		Test test2 = new Test(5);
	}
}

class Test {
	// 靜態代碼塊1
	static {
		System.out.println("我是靜態代碼塊1");
	}
	// 構造代碼塊1:
	{
		System.out.println("我是構造代碼塊1");
	}

	// 構造函數1
	public Test() {
		System.out.println("我是無參構造函數");
	}

	// 構造函數2
	public Test(int t) {
		System.out.println("我是帶參構造函數," + "參數是" + t);
	}

	// 靜態代碼塊2
	static {
		System.out.println("我是靜態代碼塊2");
	}

	// 構造代碼塊2:
	{
		System.out.println("我是構造代碼塊2");
	}
}

運行結果:
這里寫圖片描述
通過上面的程序運行結果,我們可以看出,靜態代碼塊只會在類被載入內存時加載一次,是最先執行的,然后是構造代碼塊,最后才是構造函數。構造代碼塊和構造函數都是在對象創建的時候執行,有幾個對象就會執行幾次。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM