類變數
引入
要統計共有多少小孩加入了游戲,已有解法如下:
package staticDemo;
public class Child {
private String name;
public Child(String name) {
this.name = name;
}
public void join(){
System.out.println(name + "加入了游戲...");
}
public static void main(String[] args) {
int count = 0;
Child child1 = new Child("阿明");
child1.join();
count++;
Child child2 = new Child("阿東");
child2.join();
count++;
Child child3 = new Child("阿瓜");
child3.join();
count++;
System.out.println(count + "人參加了游戲...");
}
}
存在的問題:
在main()中設定了一個count變數來統計child數量,但是在Child類中卻沒有定義,
解決方法:
將count設定為static
p1和p2有共享空間
修改后的程式如下
package staticDemo;
public class Child {
private String name;
private static int count = 0;
public Child(String name) {
this.name = name;
}
public void join(){
System.out.println(name + "加入了游戲...");
}
public static void main(String[] args) {
int count = 0;
Child child1 = new Child("阿明");
child1.join();
child1.count++;
Child child2 = new Child("阿東");
child2.join();
child2.count++;
Child child3 = new Child("阿瓜");
child3.join();
child3.count++;
System.out.println(Child.count + "人參加了游戲...");
System.out.println(child1.count);
System.out.println(child2.count);
System.out.println(child3.count);
}
}
結果
阿明加入了游戲…
阿東加入了游戲…
阿瓜加入了游戲…
3人參加了游戲…
3
3
3
何時需要類變數
當我們需要讓某個類的所有物件都共享一個變數時,就可以考慮使用類變數(靜態變數)
類變數和實體變數的區別
類變數時該類的所有物件共享的,而實體變數時每個物件單獨享有的,
static記憶體
- 共享的空間是一個堆空間 ,被物件共享
- static類變數,在類加載的時候就生成了,所以即使沒有創建物件實體也可以訪問
如何訪問類變數
- 物件名.類變數名
- 類名. 類變數名
- 類變數的訪問,必須遵守相關的訪問權限
類方法
如何呼叫類方法
- 物件名.類方法
- 類名.類方法
- 類方法的訪問,必須遵守相關的訪問權限
什么時候呼叫類方法
當方法中不涉及到任何和物件相關的成員,則可以將方法設計成靜態方法,提高開發效率
比如:utils類,Math類,Arrays類,Collections類
注意事項
- 類方法中不能使用this,super
- 類方法中只能訪問靜態變數或靜態方法

- 普通方法,可以訪問靜態成員和非靜態成員
main()方法
public static void main(String[] args)
- main方法是虛擬機呼叫的
- Java虛擬機在執行main()方法,所以該方法的訪問權限必須是public
- Java虛擬機在執行main()方法時不必創建物件,所以該方法必須是static
String[] args,該方法接收的是String型別的陣列引數,該陣列中保存執行java命令時傳遞給所運行的類的引數

idea中設定運行的類的引數


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/323243.html
標籤:其他
下一篇:2021.10月自考
