Java物件建立的順序

2021-09-02 02:12:54 字數 1320 閱讀 5030

實踐出真知,上**:

package test;

//用來檢測建立順序的類

public

class

c}

package test;

//父類

public

class

astatic

public

static c c2=

newc

("父類"

,"靜態成員變數");

public c c=

newc

("父類"

,"普通成員變數");

}

package test;

//子類

public

class

bextends

apublic

static c c2=

newc

("子類"

,"靜態成員變數");

static

public c c=

newc

("子類"

,"普通成員變數");

}

package test;

//執行類

public

class

main5

}

開啟第一處注釋結果:

由此可知:類的靜態**塊和靜態成員變數的初始化不需要建立物件,不像一些博文裡面描述的第一次建立物件的時候才會初始化靜態**塊和靜態成員變數,應該說是第一次引用類的時候類的靜態**塊和靜態成員變數的被初始化,而且只會被初始化一次

開啟第二處注釋結果:

先來分析**塊和成員變數間的先後順序:

由 1與2、3與4 和子父類的**可以知道:靜態**塊和靜態成員變數的初始化順序和**中出現的順序有關,普通**塊和普通成員變數也一樣

順序總結:

父類靜態**塊/父類靜態成員變數(與編寫**的順序有關)–>子類靜態**塊/子類靜態成員變數(與編寫**的順序有關)–>父類普通**塊/父類普通成員變數(與編寫**的順序有關)–>父類的構造方法–>子類普通**塊/子類普通成員變數(與編寫**的順序有關)–>子類的構造方法

Java建立物件的順序

建立乙個類 c的物件 1.載入所有得類。2.執行靜態初始化。3.分配記憶體,並初始化為零。4.處理呼叫的c的建構函式的引數。6.處理隱式或者顯式的建構函式 this 或者super 7.初始化c中的變數。8.執行c的 instance initialization 9.執行 呼叫的c的建構函式。cl...

Java物件的建立

使用new關鍵字 使用物件的clone方法 使用反序列化 使用class類的newinstance方法 使用constructor的類的newinstance方法 方式一 person lamze new person lamze 18 方式二 使用clone方法建立物件 步驟 1 要建立的物件的類...

java物件的建立過程

以一道例題開始 public class test static public test string str public static int print string str public static void main string args 執行結果是 1 j i 0 n 0 2 構造快...