public
class test
static
int num = 4; //2.第二步,靜態變數和靜態**塊的載入順序由編寫先後決定
int a = 5; //6.第六步,按照順序載入變數
test()
static
static
void run() // 靜態方法,呼叫的時候才載入// 注意看,e沒有載入
}
一般順序:靜態塊(靜態變數)——>成員變數——>構造方法——>靜態方法
1、靜態**塊(只載入一次) 2、構造方法(建立乙個例項就載入一次)3、靜態方法需要呼叫才會執行,所以最後結果沒有e
}
執行main方法,程式輸出順序為: 134
5a b e 2
67 c f d 2
67 c f d
輸出結果表明,程式的執行順序為:
如果類還沒有被載入:
1、先執行父類的靜態**塊和靜態變數初始化,並且靜態**塊和靜態變數的執行順序只跟**中出現的順序有關。
2、執行子類的靜態**塊和靜態變數初始化。
3、執行父類的例項變數初始化
4、執行父類的建構函式
5、執行子類的例項變數初始化
6、執行子類的建構函式
如果類已經被載入:
則靜態**塊和靜態變數就不用重複執行,再建立類物件時,只執行與例項相關的變數初始化和構造方法。
JAVA中靜態塊 靜態變數載入順序詳解
public class test static int num 4 2.第二步,靜態變數和靜態 塊的載入順序由編寫先後決定 int a 5 6.第六步,按照順序載入變數 test static static void run 靜態方法,呼叫的時候才載入 注意看,e沒有載入 public class...
java 靜態變數 與 非靜態變數
一 建立乙個類的物件時 new 類名 時,該類的.class檔案會被載入到一段記憶體中。1.先將該類的.class檔案會被載入到一段記憶體,初始化static屬性和方法,為他們分配空間,以後一直在記憶體中,即使這個物件被銷毀。這就是不建議使用static屬性和方法的原因之一 2.copy其中非sta...
Java靜態變數和非靜態變數
記憶體分配 靜態方法和靜態變數建立之後一直使用同一塊記憶體,是連續的。非靜態方法會存在於記憶體的多個地方,是離散的。生命週期 靜態變數的生存週期是應用的生存週期。非靜態變數的存在週期取決於例項化的類的存在週期。呼叫方式 靜態變數只能是 class.靜態變數 來呼叫,類的例項不能呼叫。非靜態變數在變數...