JAVA中初始化問題
所有類的變量不論是在類的什么位置,他的初始化都會在任何函數執行前包括構造函數完成,如果沒有被初始化賦值,會得到默認值,如果在構造函數中再次被賦值,他將變更原來的初值。所以一個程序中最先執行的是他的類成員變量的初始化。所以要注意這個問題。static成員變量也會給與默認初始值,但不同的是:通常每生成一個類的對象,他的類范圍變量都要初始化一次,但static變量只在第一個對象產生的時候初始化,以后同樣類的對象在產生,他不會被初始化。即使非static變量在Static 變量前聲明,Static 優先級高,會被先初始化。Thinking in Java 的160頁下方的Dog事例閱讀。
1.找到classpath所指定的路徑,裝載class文件
2.所有static成員初始化動作都會被執行,此操作只會發生一次,首次對象被封裝的時候。
3.當new Class,在heap上分配空間。
4.執行初始化動作。
5.執行構造函數。
6.需要注意的是如果有繼承關系的話,先初始化超類的變量和構造函數,然后是子類的。
posted on 2006-03-08 14:43 Rockysnail 閱讀(283) 評論(0) 編輯 收藏 所屬分類: Java