Java中的static靜態代碼塊的使用

靜態方法注意事項  

  使用類的靜態方法時,注意:

    a.在靜態方法裏只能直接調用同類中其他的靜態成員(包括變量和方法),而不能直接訪問類中的非靜態成員。這是因爲,對於非靜態的方法和變量,需要先創建類的實例對象後纔可使用,而靜態方法在使用前

不用創建任何對象。

    b.靜態方法不能以任何方式引用this和super關鍵字,因爲靜態方法在使用前不用創建任何實例對象,當靜態方法調用時,this所引用的對象根本沒有產生(this關鍵字只能在方法內部使用,表示對“調用方法的那

個對象”的引用)。

  靜態變量是屬於整個類的變量而不是屬於某個對象的。注意不能把任何方法體內的變量聲明爲靜態,例如: fun() {    static int i=0;//非法。 }

public class StaticBlock {
     static {
         System.out.println("靜態塊");
     }
     {
         System.out.println("構造塊,在類中定義");
     }
     public StaticBlock() {
         System.out.println("構造方法執行");
     }
     public static void main(String[] args) {
         new StaticBlock();
         new StaticBlock();
     }
 }

程序運行結果:

靜態塊 
構造塊,在類中定義 
構造方法執行 
構造塊,在類中定義 
構造方法執行


總結:靜態代碼塊是在類加載時自動執行的,非靜態代碼塊是在創建對象時自動執行的代碼,不創建對象不執行該類的非靜態代碼塊。且執行順序爲靜態代碼塊------非靜態代碼塊----構造函數。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章