JAVA中初始化的順序

2021-06-05 23:16:06 字數 1398 閱讀 4492

class bowl 

void f1(int marker)

}class table

void f2(int marker)

static bowl bowl2 = new bowl(2);

}class cupboard

void f3(int marker)

static bowl bowl5 = new bowl(5);

}public class staticinitialization

// static table table = new table();

static cupboard cupboard = new cupboard();

}

初始化的順序是先靜態物件,而後是非靜態物件

在類的內部,變數定義的先後順序決定了初始化的順序。即使變數定義散布於方法定義之間,它們仍舊會在任何方法(包括構造器)被呼叫之前得到初始化

靜態初始化動作** 僅執行一次

以下兩個程式予以對比

class mug

void f(int marker) }

public class mugs

mugs()

mugs(int i)

public static void main(string args)

} /*

* output: mug(1) mug(2) mug1 & mug2 initialized inside main() mugs() new mugs()

* completed mugs(int) new mugs(1) completed completed

*/// :~

class mug 

void f(int marker)

}public class mugs

mugs()

mugs(int i)

public static void main(string args)

} /* output:

inside main()

mug(1)

mug(2)

mug1 & mug2 initialized

mugs()

new mugs() completed

mug(1)

mug(2)

mug1 & mug2 initialized

mugs(int)

new mugs(1) completed

*///:~

java初始化順序

1 父類靜態成員和靜態初始化塊 按在 中出現的順序依次執行 2 子類靜態成員和靜態初始化塊 按在 中出現的順序依次執行 3 父類例項成員和例項初始化塊 按在 中出現的順序依次執行 4 父類構造方法 5 子類例項成員和例項初始化塊 按在 中出現的順序依次執行 6 子類構造方法 public abstr...

java初始化順序

例如以下 package chapter5 public class demo1one public void printinfo public static void main string args 程式一開始先執行 private static string password 0721 這行 ...

JAVA初始化順序

1 當使用新建物件例項或者呼叫靜態成員變數或者方法時,初始化靜態變數 2 靜態變數在初始化時在前面的先初始化,靜態塊和靜態變數相同對待 在初始化過程中,有新建物件例項的時候,暫時停止後面的靜態變數初始化 3 靜態變數沒有初始化時,使用預設的初始值 如int為0 4 新建物件例項,對非靜態的成員變數進...