首頁| 新聞| 娛樂| 游戲| 科普| 文學| 編程| 系統| 數據庫| 建站| 學院| 產品| 網管| 維修| 辦公| 熱點
例1:
類加載順序: * 1.加載類的靜態屬性(非靜態不管) * 這里加載的是:public static int k = 0; * 然后加載:public static StaticTest t1 = new StaticTest(“t1”); * 因為此處進行了類的實例化所以 * 1.1加載類的非靜態屬性 * 這里是:public int j = print(“j”); * 運行完這個方法接著 * 1.2順序加載類中的非static代碼塊(static暫時不加載) * 這里是:print(“構造快”);和print(“靜態塊”); * 運行完接著 * 1.3加載類的構造方法 * 這里是:public StaticTest(String str) * 運行完(一個靜態屬性的實例就完成了) * 2.繼續加載類的靜態屬性 * 這里加載的是:public static StaticTest t2 = new StaticTest(“t2”); * 2.1重復(1.1-1.3) * 3.繼續加載類的靜態屬性 * 這里加載的是:public static int i = print(“i”); * 運行完接著 * 4.繼續加載類的靜態屬性 * 這里加載的是:public static int n = 99; * 不管你n原來是多少現在為99 * 接著 * 5.(如果有static代碼塊,在這里先加載,這個里面沒有所以加載主函數)加載主函數 * 這里加載的是:StaticTest t = new StaticTest(“init”); * 因為此處進行了類的實例化所以 * 5.1 * 重復1.1-1.3 * 5.2 * 因為public static int print(String str)這個方法返回++n * 所以n從99開始累 * 運行完OK了
例2:
一般順序:靜態塊(靜態變量)–>成員變量(匿名代碼塊)–>構造方法–>靜態方法(調用的時候才加載)
例3:
執行main方法,程序輸出順序為: 1 3 4 5 a b e 2 6 7 c f d 2 6 7 c f d
如果有繼承關系:
如果類還沒有被加載: 1、先執行父類的靜態代碼塊和靜態變量初始化,并且靜態代碼塊和靜態變量的執行順序只跟代碼中出現的順序有關。 2、執行子類的靜態代碼塊和靜態變量初始化。 3、執行父類的實例變量初始化 4、執行父類的構造函數 5、執行子類的實例變量初始化 6、執行子類的構造函數
如果類已經被加載: 則靜態代碼塊和靜態變量就不用重復執行,再創建類對象時,只執行與實例相關的變量初始化和構造方法。
索泰發布一款GTX 1070 Mini迷
AMD新旗艦顯卡輕松干翻NVIDIA
索泰發布一款GTX 1070 Mini迷你版本:小機
芭蕾舞蹈表演,真實美到極致
下午茶時間,悠然自得的休憩
充斥這繁華奢靡氣息的城市迪拜風景圖片
從山間到田野再到大海美麗的自然風景圖片
肉食主義者的最愛美食烤肉圖片
夏日甜心草莓美食圖片
人逢知己千杯少,喝酒搞笑圖集
搞笑試卷,學生惡搞答題
新聞熱點
疑難解答
圖片精選
Java線程池執行原理分析
java class文件準確的反編譯思路
Java 容器相關知識全面總結
網友關注