學(xué)習(xí)Java的同學(xué)注意了?。?!
學(xué)習(xí)進程中遇到甚么問題或想獲得學(xué)習(xí)資源的話,歡迎加入Java學(xué)習(xí)交換群,群號碼:183993990 我們1起學(xué)Java!
1、虛擬機在首次加載Java類時,會對靜態(tài)初始化塊、靜態(tài)成員變量、靜態(tài)方法進行1次初始化
2、只有在調(diào)用new方法時才會創(chuàng)建類的實例
3、類實例創(chuàng)建進程:依照父子繼承關(guān)系進行初始化,首先履行父類的初始化塊部份,然后是父類的構(gòu)造方法;再履行本類繼承的子類的初始化塊,最后是子類的構(gòu)造方法
4、類實例燒毀時候,首先燒毀子類部份,再燒毀父類部份
public class Parent { public static int t = parentStaticMethod2(); { System.out.println("父類非靜態(tài)初始化塊"); } static { System.out.println("父類靜態(tài)初始化塊"); } public Parent() { System.out.println("父類的構(gòu)造方法"); } public static int parentStaticMethod() { System.out.println("父類類的靜態(tài)方法"); return 10; } public static int parentStaticMethod2() { System.out.println("父類的靜態(tài)方法2"); return 9; } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub super.finalize(); System.out.println("燒毀父類"); } }
public class Child extends Parent { { System.out.println("子類非靜態(tài)初始化塊"); } static { System.out.println("子類靜態(tài)初始化塊"); } public Child() { System.out.println("子類的構(gòu)造方法"); } public static int childStaticMethod() { System.out.println("子類的靜態(tài)方法"); return 1000; } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub super.finalize(); System.out.println("燒毀子類"); } }
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Parent.parentStaticMethod(); // Child child = new Child(); } }
輸出
父類的靜態(tài)方法2
父類靜態(tài)初始化塊
父類類的靜態(tài)方法
類中static 方法在第1次調(diào)用時加載,類中static成員按在類中出現(xiàn)的順序加載。當(dāng)調(diào)用靜態(tài)方法2時輸出
父類的靜態(tài)方法2
父類靜態(tài)初始化塊
父類的靜態(tài)方法2
注釋掉Parent.parentStaticMethod();
去掉注釋Child child = new Child();
父類的靜態(tài)方法2
父類靜態(tài)初始化塊
子類靜態(tài)初始化塊
父類非靜態(tài)初始化塊
父類的構(gòu)造方法
子類非靜態(tài)初始化塊
子類的構(gòu)造方法
學(xué)習(xí)Java的同學(xué)注意了!?。?/span>
學(xué)習(xí)進程中遇到甚么問題或想獲得學(xué)習(xí)資源的話,歡迎加入Java學(xué)習(xí)交換群,群號碼:183993990 我們1起學(xué)Java!