static 型別初始化

2021-08-29 15:22:27 字數 587 閱讀 5459

在初始化時,先初始化static型別變數,再初始化普通變數,再初始化建構函式。

如下程式:

class a

void f(int i)

}class b

void f2(int i)

static a a2=new a(2);

}class c

void f3(int i)

static a a5=new a(5);

}public class teststaticinitial

static b bb=new b();

static c cc=new c();

}執行順序:

在主程式中,先初始化static 變數bb,cc.

再列印now begin to test!;

執行new c();

再列印now begin to test the second time

執行new c();

初始化變數bb的過程:

先初始化static 變數a1,a2

再執行b();

[color=red]注意static變數只執行初始化一次[/color]

型別初始化

最近兩天在看 net 本質論 其中提到了一型別初始化中比較關鍵的兩個方法 型別初始化器 cctor 和建構函式 ctor 建構函式不用多說,上學時就知道,但是型別初始化器我是剛剛知道,它是乙個無返回值 無引數 靜態的函式,在型別首次被載入時呼叫,接下來來看個例子 class class1 ctor ...

static資料的初始化

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...

static靜態初始化塊

j a 中可以通過初始化塊進行資料賦值。如 在類的宣告中,可以包含多個初始化塊,當建立類的例項時,就會依次執行這些 塊。如果使用 static 修飾初始化塊,就稱為靜態初始化塊。需要特別注意 靜態初始化塊只在類載入時執行,且只會執行一次,同時靜態初始化塊只能給靜態變數賦值,不能初始化普通的成員變數。...