Java基礎語法 - 面向對象 - static 關鍵字

使用static關鍵字修飾的變量、常量和方法分別被稱做靜態變量、靜態常量和靜態方法,也被稱做類的靜態成員this

靜態變量

使用static修飾過的類變量稱爲靜態變量spa

該變量須要使用類名.變量名進行調用,不能使用對象名/this進行調用code

在類方法中不能定義與靜態變量同名的局部變量對象

 

 1 package mingri.chapter_6;
 2 
 3 public class Pool {
 4 
 5     public static int water = 0;    // 定義一個靜態變量
 6 
 7     public void outlet() {
 8         // String water = "";   // 在類方法中,不能定義與靜態變量同名的變量名
 9         if (water >= 2) {       // 在類方法中不能使用 this.water 進行調用,只能使用變量名進行調用
10             water -= 2;
11         } else {
12             water = 0;
13         }
14     }
15 
16     public void inlet() {
17         water += 3;
18     }
19 
20     public static void main(String[] args) {
21         Pool pool = new Pool();
22         System.out.println("水池的水量:" + Pool.water);  // 只能經過類名.靜態變量名進行訪問
23 
24         pool.inlet();
25         pool.inlet();
26 
27         System.out.println("水池的水量:" + Pool.water);
28         System.out.println("水池放水一次");
29         pool.outlet();
30         System.out.println("水池的水量:" + Pool.water);
31     }
32 }

 

靜態方法

靜態方法與靜態變量相似,使用類名.靜態方法名便可調用blog

 1 package mingri.chapter_6;
 2 
 3 public class Pool2 {
 4 
 5     // 定義靜態變量
 6     public static int water = 0;
 7 
 8     // 定義靜態方法
 9     public static void outlet() {
10         if (water > 2) {
11             water -= 2;
12         } else {
13             water = 0;
14         }
15     }
16 
17     // 定義靜態方法
18     public static void inlet() {
19         water += 3;
20     }
21 
22     public static void main(String[] args) {
23         System.out.println("水池的水量:" + Pool2.water);     // 調用靜態變量
24         System.out.println("水池注水兩次。");
25 
26         Pool2.inlet();      // 調用靜態方法
27         Pool2.inlet();
28 
29         System.out.println("水池的水量:" + Pool2.water);    // 調用靜態變量
30         System.out.println("水池放水一次。");
31 
32         Pool2.outlet();     // 調用靜態方法
33 
34         System.out.println("水池的水量:" + Pool2.water);     // 調用靜態變量
35     }
36 }

 

靜態代碼塊

在類的成員方法以外,用static修飾代碼區域能夠稱之爲靜態代碼塊。定義一塊靜態代碼塊,能夠完成類的初始化操做,在類聲明時就會運行class

語法以下:變量

 1 package mingri.chapter_6;
 2 
 3 public class StaticTest {
 4 
 5     // 靜態代碼塊
 6     static {
 7         System.out.println("靜態代碼塊");
 8     }
 9 
10     public static void main(String[] args) {
11         StaticTest st;
12         System.out.println("main主方法");
13     }
14 }

 

代碼塊的執行順序語法

 1 package mingri.chapter_6;
 2 
 3 public class StaticTest {
 4 
 5     static String name;
 6 
 7     // 靜態代碼塊
 8     static {
 9         System.out.println(name + "靜態代碼塊");
10     }
11 
12     public StaticTest(String str){
13         name = str;
14         System.out.println(name + "構造方法");
15 
16     }
17 
18     public void method() {
19         System.out.println(name + "成員方法");
20     }
21 
22     public static void main(String[] args) {
23         StaticTest s1;      // 聲明變量的時候就已經運行靜態代碼塊了
24         StaticTest s2 = new StaticTest("s2");
25         StaticTest s3 = new StaticTest("s3");
26         s3.method();
27         System.out.println("main主方法");
28     }
29 }
30 
31 /*
32 * 輸出結果
33     null靜態代碼塊
34     s2構造方法
35     s3構造方法
36     s3成員方法
37     main主方法
38 * */
相關文章
相關標籤/搜索