新建乙個物件初始化執行順序

2021-09-01 22:58:50 字數 1109 閱讀 3658

/**

* person p = new person();

1,載入person.class檔案。

2,執行person類中的靜態**塊對person類進行初始化。

3,在堆記憶體開闢空間分配記憶體位址,並對物件中的屬性進行預設初始化和構造**塊初始化。

注:(構造**塊的初始化跟物件中的預設屬性是一致的,誰在前,就先例項化誰。)

如:下面則先執行int x=4;

在執行構造**塊,之後再執行int y=5;

***********************************====

int x = 4;

int y=5;

***********************************====

4,與之對應的建構函式初始化。

5,將物件的記憶體位址值賦值給p。 *

*/

public class staticcode {

int x = 4;

// system.out.println("d" + age);//在這裡如果寫上成員變數age,則會編譯失敗,不管age屬性是私有還是共有。

system.out.println("d");

static {

system.out.println("a");

private int age=2;

staticcode(int x) {

system.out.println("g");

staticcode() {

system.out.println("f");

void show() {

system.out.println("e");

class staticcodedemo {

static {

system.out.println("b");

//此方法執行的輸出的值依次是:

b、a、

d、f、

e、d、g、e

public static void main(string args) {

new staticcode().show();

new staticcode(4).show();

InitOrder初始化執行順序

目錄總結 包的引用,函式執行順序 go algorithm 根目錄 a a.go b b.go main.go a.gopackage a import fmt func init func a1 func a2 b.gopackage b import fmt go algorithm a fun...

c 物件初始化順序

c 物件初始化 1.先變數後建構函式。變數先被初始化 然後建構函式被執行 2.先靜態化後例項化。當乙個類被訪問時 靜態變數和建構函式最先被初始化 接著是物件的例項化變數和建構函式被初始化 3.先派生類後基類。對於變數和靜態建構函式 派生物件在基物件之前被初始化.比如 c類派生自b類 b類派生自a類 ...

物件的初始化順序

由 static 關鍵字修飾的 如 類變數 靜態變數 靜態 塊 將在類被初始化建立例項物件之前被初始化,而且是按順序從上到下依次被執行 沒有 static 關鍵字修飾的 如 例項變數 非靜態變數 非靜態 塊 初始化實際上是會被提取到類的構造器中被執行的,但是會比類構造器中的 塊優先執行到,其也是按順...