java中靜態初始化問題

2021-06-26 16:55:01 字數 1100 閱讀 5117

class bowl

public void f1(int maker) }

class table

public void f2(int maker)

static bowl bowl2=new bowl(2);

}class cupboard

public void f3(int maker)

static bowl bowl5=new bowl(5);

}class staticorder

static table table=new table();

static cupboard cup=new cupboard();

}

輸出結果為:
bowl(1)

bowl(2)

table

f1(2)

bowl(4)

bowl(5)

bowl(3)

cupboard

f1(2)

create new cupboard in main

bowl(3)

cupboard

f1(2)

create new cupboard in main

bowl(3)

cupboard

f1(2)

f2(1)

f3(1)

由以上**可以看出初始化的順序是先靜態物件(如果他們尚未因前面的物件建立過程而被初始化),然後"非靜態"物件。靜態只被初始化一次!

下面再舉一例

class staticorder 

//static table table=new table();

//static cupboard cup=new cupboard();

}class teststatic

public static void print()

static

}

輸出為:

我是靜態**塊

我什麼也沒有

我是初始化函式

我是靜態函式

java的靜態初始化和動態初始化

package array public class array for int i 0 i 3 i system.out.println for int i 2 i 0 i system.out.println system.out.print b.length n 動態初始化 inta new ...

Java初始化問題

類載入機制 一 對於被static修飾的類變數 被final修飾。在準備階段給類變數申請記憶體空間的同時就通過constantvalue屬性進行初始化,在呼叫此變數的時候,不會對此類進行初始化。未被final修飾。在初始化階段進行了初始化,通過類構造器 方法進行初始化,只在類使用之前呼叫一次。被動引...

java中靜態初始化塊,例項初始化塊,建構函式區別

public class people public people string name param args public static void main string args 執行效果 new兩個例項,從執行結果可以看出,靜態變數和靜態初始化塊都是在類載入到系統時,載入到系統中,靜態初始化...