靜態成員變量的初始化早於靜態代碼塊;
靜態代碼塊是指的類的初始化操作,初始化早於對象的創建;
package com.company.fourthchapter;
public class TestStaticInitBlock {
int id;
String name;
String pwd;
static String company="原始值";
static {
System.out.println("執行類的初始化");
printCompany();
company = "這個名稱是在分配對象空間之前(即:new 之前)";
printCompany();
}
public TestStaticInitBlock(String company) {
System.out.println("執行構造方法進行對象的初始化");
printCompany();
this.company = company;
printCompany();
}
public static void printCompany() {
System.out.println(company);
};
public static void main(String[] args) {
TestStaticInitBlock test = new TestStaticInitBlock("這是創建對象的時候賦值的名字,可以在這裏打一個斷點試一下");
}
}
//the following is result;輸出結果如下
執行類的初始化
原始值
這個名稱是在分配對象空間之前(即:new 之前) //PS:當斷點還沒有執行的時候,這句話已經輸出了
執行構造方法進行對象的初始化
這個名稱是在分配對象空間之前(即:new 之前)
這是創建對象的時候賦值的名字,可以在這裏打一個斷點試一下