在Java中,static
關鍵字用于聲明靜態成員(包括靜態變量和靜態代碼塊)。類的初始化順序主要受到以下因素影響:
例如:
public class MyClass {
static int a;
static {
a = 1;
System.out.println("Static block 1");
}
static int b;
static {
b = 2;
System.out.println("Static block 2");
}
}
輸出順序為:
Static block 1
Static block 2
例如:
public class MyClass {
static int a;
int b;
static {
a = 1;
System.out.println("Static block");
}
public MyClass() {
b = 2;
System.out.println("Constructor");
}
}
輸出順序為:
Static block
Constructor
例如:
public class ParentClass {
static int a;
static {
a = 1;
System.out.println("Parent static block");
}
}
public class ChildClass extends ParentClass {
static int b;
int c;
static {
b = 2;
System.out.println("Child static block");
}
public ChildClass() {
c = 3;
System.out.println("Child constructor");
}
}
輸出順序為:
Parent static block
Child static block
Child constructor
總之,Java中類的初始化順序主要受到靜態成員和非靜態成員的聲明順序以及繼承關系的影響。靜態代碼塊的執行順序通常決定了靜態變量的初始化順序,而非靜態成員變量的初始化順序遵循它們在類中出現的順序。