Java之static關鍵字

動力節點學習筆記java

  
  
  
  
  1.  
  2. /*  
  3.     static修飾的方法叫作靜態方法  
  4.           
  5.         通常狀況下工具類中的方法大部分都是靜態方法。  
  6.           
  7.         靜態方法不用建立對象也能直接訪問該方法。  
  8.           
  9. */ 
  10. public class StaticTest03{  
  11.       
  12.     //成員方法  
  13.     //成員方法必須使用「引用.」調用  
  14.     public void m1(){  
  15.           
  16.     }  
  17.       
  18.     //靜態方法  
  19.     //可使用「類名.」方式調用.也能夠用「引用.」,即便用的是「引用.」,底層仍是用的「類名.」  
  20.     //靜態方法中不能直接訪問非靜態數據.  
  21.     //靜態方法中不能使用this  
  22.     public static void m2(){  
  23.         System.out.println("m2....");  
  24.     }  
  25.       
  26.     //入口  
  27.     public static void main(String[] args){  
  28.           
  29.         StaticTest03 st = new StaticTest03();  
  30.         st.m1();  
  31.           
  32.         m2();  
  33.           
  34.         //靜態的方法按照正規的方式訪問:「類名.」  
  35.         //靜態的方法也能用「引用.」訪問  
  36.         st.m2(); //編譯階段檢查出st是StaticTest03類型,編譯經過,運行的時候,仍然使用 "StaticTest03."的方式訪問。  
  37.                     //該方法執行不須要對象。  
  38.           
  39.           
  40.         //空的引用去訪問成員的時候會出現空指針異常。  
  41.         //m2方法不是「成員」而是靜態的。  
  42.         //因此即便引用是空的,也不會報空指針異常。  
  43.         StaticTest03 s = null;  
  44.         s.m2();   
  45.           
  46.     }  
  47.       
  48. }  
  49.  

 

 

  
  
  
  
  1. /*  
  2.     static關鍵字:  
  3.         1.static修飾的變量叫作「靜態變量」.  
  4.         2.static修飾的方法叫作「靜態方法」.  
  5.         3.static還能夠定義靜態語句塊.  
  6.       
  7.     如下例子演示:static定義靜態語句塊  
  8.       
  9.     static定義的靜態語句塊在類加載階段執行,而且只執行一次,而且是自上而下的順序執行。  
  10. */ 
  11. public class StaticTest01{  
  12.       
  13.     //靜態語句塊  
  14.     static{  
  15.         System.out.println("1");  
  16.     }  
  17.       
  18.     static{  
  19.         System.out.println("2");  
  20.     }  
  21.       
  22.     static{  
  23.         System.out.println("3");  
  24.     }  
  25.       
  26.     static{  
  27.         System.out.println("4");  
  28.     }  
  29.       
  30.     //入口  
  31.     public static void main(String[] args){  
  32.         System.out.println("main execute!  1");  
  33.         System.out.println("main execute!  2");  
  34.     }  
  35.       
  36. }  

 

  
  
  
  
  1. /*  
  2.     關於實例語句塊  
  3.         每一次調用構造方法以前會執行一次。  
  4.         實例語句塊執行順序也是自上而下。  
  5. */ 
  6.  
  7. public class StaticTest02{  
  8.  
  9.     //靜態語句塊  
  10.     static{  
  11.         System.out.println("A");  
  12.     }  
  13.       
  14.     //實例語句塊  
  15.     {  
  16.         System.out.println("1");  
  17.     }  
  18.       
  19.       
  20.     {  
  21.         System.out.println("2");  
  22.     }  
  23.       
  24.       
  25.     {  
  26.         System.out.println("3");  
  27.     }  
  28.       
  29.     //構造方法  
  30.     StaticTest02(){  
  31.         System.out.println("StaticTest02無參數的構造執行!");  
  32.     }  
  33.       
  34.     //入口  
  35.     public static void main(String[] args){  
  36.           
  37.         //調用構造方法  
  38.         new StaticTest02();  
  39.           
  40.         new StaticTest02();  
  41.           
  42.         new StaticTest02();  
  43.     }  
  44. }  

 

  
  
  
  
  1. /*  
  2.     static修飾的變量叫作「靜態變量」  
  3.           
  4.         變量分類:  
  5.             1.局部變量  
  6.             2.成員變量(實例變量,非靜態變量)  
  7.             3.靜態變量(方法區)  
  8.           
  9.         何時變量聲明成靜態變量?  
  10.             若是這個屬性全部的對象都有,而且這個屬性的值是相同的,則該屬性聲明成  
  11.             靜態的屬性。  
  12.           
  13.           
  14.         成員變量:建立java對象的時候初始化。  
  15.         靜態變量:在類加載階段賦值,而且只賦值一次。  
  16. */ 
  17. public class StaticTest04{  
  18.       
  19.     public static void main(String[] args){  
  20.           
  21.         Animal a1 = new Animal("AAA",10);  
  22.         Animal a2 = new Animal("BBB",11);  
  23.           
  24.         //如何訪問(類名.)  
  25.         System.out.println(Animal.type);  
  26.           
  27.         //也可使用 引用.  
  28.         System.out.println(a1.type);  
  29.           
  30.           
  31.         Animal a3 = null;  
  32.         System.out.println(a3.type); //靜態變量底層訪問的時候必定使用的  類名. 和對象無關,不會出現空指針異常。  
  33.           
  34.     }  
  35. }  
  36.  
  37.  
  38. //抽象現實世界中的「陸生」動物  
  39. class Animal{  
  40.       
  41.     //Field  
  42.     //成員變量(一個對象一份.)  
  43.     //成員變量在建立對象的時候初始化,而且存儲在堆中的每個對象中。  
  44.     String name;  
  45.     int age;  
  46.       
  47.     //靜態變量,被存儲在方法區.  
  48.     //全部的java對象共享這一份。  
  49.     //因此靜態變量是類級別的,使用「類名.」的方式訪問.  
  50.     static String type = "陸生";  
  51.       
  52.     //Constructor  
  53.     Animal(String name,int age){  
  54.         this.name = name;  
  55.         this.age = age;  
  56.     }  

 

  
  
  
  
  1.  
  2. /*  
  3.     關於代碼的順序  
  4. */ 
  5. public class StaticTest05{  
  6.       
  7.     //編譯經過  
  8.     static int i = 100;  
  9.       
  10.     static{  
  11.         System.out.println(i);  
  12.     }  
  13.       
  14.       
  15.       
  16.     //非法向前引用  
  17.     /*  
  18.     static{  
  19.         System.out.println(i);  
  20.     }  
  21.       
  22.     static int i = 100;  
  23.     */ 
  24.       
  25. }  

 

  
  
  
  
  1. /*  
  2.  
  3.     類{  
  4.           
  5.         //能夠經過「類名.」,也能夠經過「引用.」,即便使用「引用.」底層也是「類名.」  
  6.         //1.靜態變量  
  7.         //2.靜態方法  
  8.           
  9.         //必須對象存在才能夠訪問,採用「引用.」  
  10.         //3.成員變量  
  11.         //4.成員方法  
  12.           
  13.         //建立對象,給成員變量賦值  
  14.         //5.構造方法  
  15.           
  16.         //類加載時只執行一次。  
  17.         //6.靜態語句塊  
  18.           
  19.         //構造方法沒調用以前執行一次。  
  20.         //7.實例語句塊  
  21.           
  22.         //用在成員方法和構造方法中。  
  23.         //8.this  
  24.     }  
  25.       
  26.     空指針異常:空引用訪問成員  
  27.       
  28. */
相關文章
相關標籤/搜索