java 調用靜態方法和構造函數和靜態塊執行的先后順序


構造方法是只有你在new對象的時候才會執行,靜態語句塊和靜態方法在類加載到內存的時候就已經執行了
,另外,靜態語句塊只能給靜態變量賦值,里面不能出現方法,同樣,靜態方法里面也不能出現靜態語句塊

追問:
調用靜態方法之前是不是先執行了靜態語句塊呢
 
追答:
對,先是靜態語句塊執行,然后靜態方法加載到內存.
靜態語句塊你不管它它自動會執行,而靜態方法它一直存在於內存中,只有你用類名點方法名的時候才會執行
public class ExA {  
    static {  
        System.out.println("父類--靜態代碼塊");  
    }  
   
    public ExA() {  
        System.out.println("父類--構造函數");  
    }  
   
    {  
        System.out.println("父類--非靜態代碼塊");  
    }  
   
    public static void main(String[] args) {  
        new ExB();  
    }  
}  
   
class ExB extends ExA {  
    static {  
        System.out.println("子類--靜態代碼塊");  
    }  
    {  
        System.out.println("子類--非靜態代碼塊");  
    }  
   
    public ExB() {  
        System.out.println("子類--構造函數");  
    }  
}  
 
執行結果 
===== 
父類--靜態代碼塊 
子類--靜態代碼塊 
父類--非靜態代碼塊 
父類--構造函數 
子類--非靜態代碼塊 
子類--構造函數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM