靜態代碼塊:最早執行, 類 被載入記憶體時執行,只執行一次。沒有名字、參數和返回值,有關鍵字static。 構造代碼塊:執行時間比靜態代碼塊晚,比構造函數早,和構造函數一樣,只在 對象 初始化的時候運行。沒有名字、參數和返回值。 構造函數:執行時間比構造代碼塊時間晚,也是在 對象 初始化的時候運行。沒 ...
靜態代碼塊:最早執行,類被載入記憶體時執行,只執行一次。沒有名字、參數和返回值,有關鍵字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");
}
}
運行結果:
通過上面的程式運行結果,我們可以看出,靜態代碼塊只會在類被載入記憶體時載入一次,是最先執行的,然後是構造代碼塊,最後才是構造函數。構造代碼塊和構造函數都是在對象創建的時候執行,有幾個對象就會執行幾次。