Java類成員的初始化順序

2021-07-12 01:19:17 字數 404 閱讀 9063

靜態成員(靜態變數、靜態初始化塊) > 變數、初始化塊 > 構造器

只要乙個類被使用:

呼叫了類中的某個靜態方法或者是建立物件

,這兩種情況表明該類被使用了。

如果是有類的繼承關係,則優先執行父類中的成員,屬性及構造器,及初始化順序為:

父類的靜態成員

子類的靜態成員

父類的變數、初始化塊

父類構造器

子類的變數、初始化塊

子類構造器

靜態成員的特性為,只在資料儲存區佔乙份記憶體,被類的所有物件所共有,在類被使用時執行。

非靜態**塊主要用於對物件的初始化操作,

每次建立物件都會執行一次

。在構造器之前被呼叫,因此當有多個過載的構造器,並且有許多共同的初始化操作可放在非靜態**塊中執行。

Java類成員初始化順序

首先看下這段測試 public class classloader 1.第二步,靜態變數和靜態 塊的載入順序由編寫先後決定 static int snum 4 2.第三步,靜態塊,然後執行靜態 塊,因為有輸出,故列印 static 4.第五步,按照順序載入匿名 塊,塊中有列印 5.第六步,按照順序載...

java類成員初始化順序

乙個類中,最首先被初始化的是靜態成員。只要乙個類建立物件或呼叫該類的靜態方法時靜態成員就都會被初始化,並且靜態資料在記憶體中只占用乙份儲存區域,無論建立多少個物件,靜態資料被所有物件共享。初始化靜態成員後再初始化非靜態成員。屬性 方法 構造方法和自由塊都是類的成員,在建立類物件時,類中各執行順序 b...

JAVA類的成員初始化順序

下面是父類 package staitic public class parent 初始化塊 構造器 public parent out 下面是子類 package staitic public class subclass extends parent 構造器 public subclass 初始...