一個簡單的例子
1. 所有靜態的(無論其是變量還是塊)都按順序執行.
2. 所有的非靜態的塊都在靜態的(無論其是變量還是塊)後執行.
3. 所有的塊(無論是靜態的還是非靜態的)都在構造之前執行.
4. 靜態塊在類被加載到內存後就開始執行
5. 非靜態塊是在創建對象時,構造之前被調用
- public class TestStaticMode {
- public TestStaticMode() {
- System.out.println("in structure");
- }
- static int i = 0;
- {
- System.out.println("in first no static i=" + i);
- }
- static {
- i = 1;
- System.out.println("in static i=" + i);
- }
- {
- System.out.println("in second no static i=" + i);
- }
- public static void main(String args[]) {
- TestStaticMode testStaticMode = new TestStaticMode();
- System.out.println("i=" + i);
- }
- }
public class TestStaticMode {
public TestStaticMode() {
System.out.println("in structure");
}
static int i = 0;
{
System.out.println("in first no static i=" + i);
}
static {
i = 1;
System.out.println("in static i=" + i);
}
{
System.out.println("in second no static i=" + i);
}
public static void main(String args[]) {
TestStaticMode testStaticMode = new TestStaticMode();
System.out.println("i=" + i);
}
}
輸出爲:
in static i=1
in first no static i=1
in second no static i=1
in structure
i=1