好程式設計師Java教程解密static關鍵字的理解

好程式設計師IT發表於2019-07-24

好程式設計師Java教程分享static關鍵字的理解,static關鍵字含義可以理解為靜態的。

1. 當其修飾屬性時,該屬性為整個類公有,所有的物件操作的都是同一個靜態屬性。所以呼叫時應該使用類名去呼叫,而不需要使用物件呼叫。


用類名去呼叫static有兩層含義:

1. 可以理解為其為整個類公有的內容。

2. 可以理解為不需要建立物件就可以直接使用。


class  Student {

private  String name ;

private  String no ;

   // 此處省略掉getter和setter

public   static  String school ;


public   static   void  main(String[] args ) {

  Student stu1  = new  Student();

   stu1 . setName ( " 某某某 " );

   stu1 . setNo ( "1001" );

  Student. school  = "千鋒" ;

  Student stu2  = new  Student();

  Student. school  = "千鋒教育" ;

  System. out .println(Student. school );

}

}


2. 當其修飾方法時,該方法不需要物件呼叫,直接使用類名即可呼叫。


// 只顯示程式碼片段

     public   static  String getSchool() {

       return   school ;

    }

    

     // 其他位置呼叫

    System. out .println(Student. getSchool ());


注意:在static方法中不能呼叫普通屬性。也不能使用this關鍵字。因為static方法是使用類名呼叫的,而使用時不能判斷是否建立物件,所以根本不能呼叫物件所對應的方法或屬性,只能呼叫static的屬性或方法。


    程式碼塊,是指在類中,直接使用{}中間寫一段程式碼,此程式碼不需要手動呼叫,在每次建立物件時會自動呼叫,甚至會在構造方法之前呼叫。


public   class  Student {

     private  String name ;

     private  String no ;

     public   static  String school ;

     public  Student(){

     System. out .println( "無參建構函式" );

     }

    

     {

     System. out .println( "此處是程式碼塊" );

     }

}


3. 當static修飾程式碼塊時,該程式碼塊為靜態程式碼塊,在類載入時呼叫,僅在第一次載入時呼叫一次。不需要建立物件。如果建立了物件,呼叫次序為:先呼叫static程式碼塊,再呼叫程式碼塊,最後呼叫構造方法。


public   class  Student {

     private  String name ;

     private  String no ;

     public   static  String school ;

     public  Student(){

     System. out .println( "無參建構函式" );

     }

     {

     System. out .println( "此處是程式碼塊" );

     }

     static {

     System. out .println( "此處是靜態程式碼塊" );

     }

}


當有一個父類Person,有一個子類Student,分別都有構造方法,程式碼塊和靜態程式碼塊時,建立一個子類物件,呼叫次序為:


此處是Person靜態程式碼塊

此處是Student靜態程式碼塊

此處是Person程式碼塊

Person無參建構函式

此處是Student程式碼塊

Student無參建構函式


程式碼如下:


public   class  Person {

     public  Person(){

     System. out .println( "Person無參建構函式" );

     }

     {

     System. out .println( "此處是Person程式碼塊" );

     }

     static {

     System. out .println( "此處是Person靜態程式碼塊" );

     }

 }


public   class  Student extends  Person{

     public  Student(){

     System. out .println( "Student無參建構函式" );

     }

    

     {

     System. out .println( "此處是Student程式碼塊" );

     }

    

     static {

     System. out .println( "此處是Student靜態程式碼塊" );

     }

}


總結一句:static其實翻譯類的,更容易理解,比如static修飾屬性,稱為類屬性,static修飾方法,稱為類方法。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2651643/,如需轉載,請註明出處,否則將追究法律責任。

相關文章