java類的成員初始化順序和初始化塊知識

2021-06-06 18:23:40 字數 1050 閱讀 6580

屬性、方法、構造方法和自由塊都是類中的成員,在建立類的物件時,類中各成員的執行順序:

1.父類靜態成員和靜態初始化快,按在**中出現的順序依次執行。

2.子類靜態成員和靜態初始化塊,按在**中出現的順序依次執行。

3. 父類的例項成員和例項初始化塊,按在**中出現的順序依次執行。

4.執行父類的構造方法。

5.子類例項成員和例項初始化塊,按在**中出現的順序依次執行。

6.執行子類的構造方法。

public class test 

}class parent

static

public parent()

}class son extends parent

static

public son()

}

執行結果:

parent中static初始化塊

son中的static初始化塊

parent中的初始化塊

parent構造方法

son中的初始化塊

son構造方法

初始化塊主要用於物件的初始化操作,在建立物件時呼叫,可以用於完成初始化屬性值、載入其他的類的功能。

初始化塊和構造方法功能類似,可以再建立物件的時候完成一些初始化的操作,一般的情況下,構造方法初始化和初始化塊初始化可以通用。

構造方法在初始化的時候可以通過引數船隻,但是初始化塊不能,初始化塊的初始化在構造方法之前執行,如果搞糟方法多次過載,此時可以考慮構造方法中共通的**放到初始化塊中進行初始化。

靜態初始化塊和非晶態初始化塊的區別?

非靜態初始化塊主要是用於物件的初始化操作,在每次建立物件的時都要呼叫一次,其執行順序在構造方法之前。

在初始化塊之前有static修飾,則為靜態初始化塊。由於非靜態成員不能再靜態方法中使用,同樣也不能在靜態初始化塊中,因此,靜態初始化塊主要用於初始化靜態變數和靜態方法,靜態初始化塊只呼叫一次,是在類的第一次載入到記憶體時,並非一定要建立物件才執行,

靜態初始化塊比非靜態初始化塊先執行。

Java類成員初始化順序

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

java類成員初始化順序

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

Java類成員的初始化順序

靜態成員 靜態變數 靜態初始化塊 變數 初始化塊 構造器 只要乙個類被使用 呼叫了類中的某個靜態方法或者是建立物件 這兩種情況表明該類被使用了。如果是有類的繼承關係,則優先執行父類中的成員,屬性及構造器,及初始化順序為 父類的靜態成員 子類的靜態成員 父類的變數 初始化塊 父類構造器 子類的變數 初...