1. 程式人生 > 其它 >|NO.Z.00070|——————————|BigDataEnd|——|Java&集合類庫.V06|----------------------------------------------|Java.v06|異常機制.v06|自定義異常|使用|

|NO.Z.00070|——————————|BigDataEnd|——|Java&集合類庫.V06|----------------------------------------------|Java.v06|異常機制.v06|自定義異常|使用|

宣告靜態成員使用static修飾符。

所謂靜態就是指在編譯後分配的記憶體會一直存在,直到程式退出時才會釋放記憶體空間。

一個類中的靜態成員可以是靜態欄位,也可以有靜態方法,靜態成員不需要建立物件後使用,可以直接使用類名來引用,例如:

有一個學生類,如下:

public class Student {
    //靜態方法
    public static void printHello()
    {
    	Console.WriteLine("全體學生歡迎您!");
    }
}

在main方法中呼叫printHello方法不需要例項化物件,而可以直接用類名來呼叫。

Student.printHello();   //此時可以列印"全體學生歡迎您!"

靜態成員是類級別的,是所有物件共享的資料,如果在學生類中,有一個欄位來記錄學生人數,此時不使用靜態成員將無法記錄學生人數,例如:

public class Student {
    public string no; //學號
    public string name; //姓名
    public int count;   //學生人數
}

在main方法中建立學生,並且每建立一個學生,給學生人數+1

Student stu1 = new Student();
stu1.no = "001";
stu1.name = "劉備";
stu1.count++;
Student stu2 = new Student();
stu2.no = "001";
stu2.name = "劉備";
stu2.count++;
Student stu3 = new Student();
stu3.no = "001";
stu3.name = "劉備";
stu3.count++;
Console.WriteLine("學生人數:" + stu3.count); //此時有三個學生,但是列印的學生人數仍然是1.

通過以上程式碼我們可以看出,學生人數並沒有增加,實際上三個物件都單獨擁有學生人數的欄位,並且毫無關聯。

此時我們可以使用靜態成員解決此問題,程式碼如下,例如:

public class Student {
    public string no; //學號
    public string name; //姓名
   	public static int count;   //學生人數
}

在main方法中建立學生,並且每建立一個學生,給學生人數+1

Student stu1 = new Student();
stu1.no = "001";
stu1.name = "劉備";
Student.count++;
Student stu2 = new Student();
stu2.no = "001";
stu2.name = "劉備";
Student.count++;
Student stu3 = new Student();
stu3.no = "001";
stu3.name = "劉備";
Student.count++;
Console.WriteLine("學生人數:" + Student.count);  //此時可以列印學生人數為3