Java自學入門之靜態變數

一品威客01發表於2021-01-28

靜態變數

在定義一個類時,只是在描述某類事物的特徵和行為,並沒有產生具體的資料。只有通過new關鍵字建立該類的例項物件後,系統才會為每個物件分配記憶體空間,儲存各自的資料。有時候,開發人員會希望某些特定的資料在記憶體中只有一份,而且能夠被一個類的所有例項物件所共享。例如某個學校所有學生共享同一個學校名稱,此時完全不必在每個學生物件所佔用的記憶體空間中都宣告一個變數來表示學校名稱,而可以在物件以外的空間宣告一個表示學校名稱的變數,讓所有物件來共享。

具體記憶體中的分配情況如圖1所示。

圖1 靜態變數記憶體分配圖

從圖1可以看出,所有學生物件共享一個名稱為schoolName的變數。在一個Java類中,要實現這種功能可以使用static關鍵字來修飾成員變數,該變數被稱作靜態變數,它可以被所有例項所共享。

靜態變數可以使用如下語法來訪問:

類名.變數名

瞭解了靜態變數的宣告和訪問方式後,接下來通過一個案例來實現圖3-18所描述的情況,如檔案1所示。

檔案1 Example12.java

1 class Student { 2 static String schoolName; // 宣告靜態變數schoolName 3 } 4 public class Example12 { 5 public static void main(String[] args) { 6 Student stu1 = new Student(); // 建立第1個學生物件 7 Student stu2 = new Student(); // 建立第2個學生物件 8 Student.schoolName = "清華大學"; // 為靜態變數賦值 9 // 分別輸出兩個學生物件的資訊 10 System.out.println("我是" + stu1.schoolName+"的學生"); 11 System.out.println("我是" + stu2.schoolName+"的學生"); 12 } 13 }

相關文章