寫demo驗證一下。
PS: 我是Android 開發工程師,新建android工程驗證
public class BaseClass {
// 靜態變量
public static String staticField = "classTest BaseClass 靜態變量";
// 靜態初始化塊
static {
System.out.println(staticField);
System.out.println("classTest BaseClass 靜態初始化塊");
}
// 變量
public String field = "classTest BaseClass 變量";
// 初始化塊
{
System.out.println(field);
System.out.println("classTest BaseClass 初始化塊");
}
// 構造器
public BaseClass() {
System.out.println("classTest BaseClass 構造器");
}
}
public class ChildClass extends BaseClass {
// 靜態變量
public static String staticField = "classTest ChildClass 靜態變量";
// 靜態初始化塊
static {
System.out.println(staticField);
System.out.println("classTest ChildClass 靜態初始化塊");
}
// 變量
public String field = "classTest ChildClass 變量";
// 初始化塊
{
System.out.println(field);
System.out.println("classTest ChildClass 初始化塊");
}
// 構造器
public ChildClass() {
System.out.println("classTest ChildClass 構造器");
}
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
testClassInit();
}
private void testClassInit() {
System.out.println("classTest -----我是start分割線----");
new BaseClass();
System.out.println("classTest -----我是mid分割線----");
new ChildClass();
System.out.println("classTest -----我是end分割線----");
}
}
result:
首次進入程序:
11-10 17:36:15.070 18368-18368/? I/System.out: classTest -----我是start分割線----
11-10 17:36:15.070 18368-18368/? I/System.out: classTest BaseClass 靜態變量
11-10 17:36:15.070 18368-18368/? I/System.out: classTest BaseClass 靜態初始化塊
11-10 17:36:15.070 18368-18368/? I/System.out: classTest BaseClass 變量
11-10 17:36:15.070 18368-18368/? I/System.out: classTest BaseClass 初始化塊
11-10 17:36:15.070 18368-18368/? I/System.out: classTest BaseClass 構造器
11-10 17:36:15.070 18368-18368/? I/System.out: classTest -----我是mid分割線----
11-10 17:36:15.070 18368-18368/? I/System.out: classTest ChildClass 靜態變量
11-10 17:36:15.070 18368-18368/? I/System.out: classTest ChildClass 靜態初始化塊
11-10 17:36:15.070 18368-18368/? I/System.out: classTest BaseClass 變量
11-10 17:36:15.070 18368-18368/? I/System.out: classTest BaseClass 初始化塊
11-10 17:36:15.070 18368-18368/? I/System.out: classTest BaseClass 構造器
11-10 17:36:15.070 18368-18368/? I/System.out: classTest ChildClass 變量
11-10 17:36:15.070 18368-18368/? I/System.out: classTest ChildClass 初始化塊
11-10 17:36:15.070 18368-18368/? I/System.out: classTest ChildClass 構造器
11-10 17:36:15.070 18368-18368/? I/System.out: classTest -----我是end分割線----
按back鍵後回到桌面此時程序未被kill,如果按多任務鍵會看到還在後臺,然後再點擊icon啓動:
11-10 17:40:24.105 18368-18368/com.example.bxh.sayhello I/System.out: classTest -----我是start分割線----
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest BaseClass 變量
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest BaseClass 初始化塊
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest BaseClass 構造器
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest -----我是mid分割線----
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest BaseClass 變量
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest BaseClass 初始化塊
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest BaseClass 構造器
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest ChildClass 變量
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest ChildClass 初始化塊
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest ChildClass 構造器
11-10 17:40:24.106 18368-18368/com.example.bxh.sayhello I/System.out: classTest -----我是end分割線----
可以看到由於靜態代碼無需再次初始化。