類變數,
有一群小孩在玩遊戲,不時有新人加入,共多少人在玩遊戲?
使用物件導向的思想,編寫程式解決:
1 public class ChildDemo{ 2 public static void main(String[] args){ 3 Child ch1 = new Child(1,"妞妞"); 4 ch1.joinGame(); 5 Child ch2 = new Child(2,"小小"); 6 ch2.joinGame(); 7 Child ch3 = new Child(3,"大大"); 8 ch2.joinGame(); 9 //靜態變數可以通過類名.變數名調用10 System.out.println("共有="+child.total);11 }12 }13 class Child{14 int age;15 String name;16 //total是靜態變數,在沒有修飾符情況下可以被任何一個對象訪問17 static int total = 0;18 public Child(int age,String name){19 this.age =age;20 this.name = name;21 }22 public void joinGame(){23 total++;24 System.out.println("有一個小孩加入");25 }26 }
都能被對象訪問達到資源共用的目的,從而節省了資源,靜態變數也可以叫類變數
類變數:
類變數是該類的所有對象共用的變數,任何一個該類的對象去訪問它時,取到的都是相同的值,同樣任何一個該類的對象去修改它時,修改的也是同一個變數。
定義類變數文法:
存取修飾詞 static 資料類型 變數名;
訪問類變數:
類名.類變數名 或者 對象名.類變數名
看下面一段代碼:
public class Demo{ static int i = 1; static{ //該靜態地區塊只執行一次 i++;//不會因為建立對象執行個體而觸發 } public Demo(){ i++; } public static void main(String[] args){ Demo dm1 = new Demo(); System.out.println(dm1.i); Demo dm2 = new Demo(); System.out.println(dm2.i); }}
當類定義時,static定義的資訊,資訊已經寫入了代碼區而自動執行了,即使不建立對象執行個體,static代碼塊裡的變數已經儲存在代碼區裡,當執行個體化一個對象時,跟static代碼塊已經沒有關係了。
public class Demo{ static int i = 1; static{ System.out.println("執行完畢"); //該靜態地區塊只執行一次 i++;//不會因為建立對象執行個體而觸發 } public Demo(){ i++; } public static void main(String[] args){ // Demo dm1 = new Demo(); // System.out.println(dm1.i); // Demo dm2 = new Demo(); // System.out.println(dm2.i); }}
類變數與執行個體變數的區別:
加上static稱為類變數或靜態變數,否則稱為執行個體變數
類變數是與類相關的,公用屬性
執行個體變數屬於每個對象個體的屬性
類變數可以通過類名.類變數名直接存取