更新時間:2022-10-27 來源:黑馬程序員 瀏覽量:
靜態變量內存分配圖
從圖3-18可以看出,所有學生對象共享一個名稱為schoolName的變量。在一個Java類中,要實現這種功能可以使用static關鍵字來修飾成員變量,該變量被稱作靜態變量,它可以所有實例所共享。
靜態變量可以使用如下語法來訪問:
類名.變量名
了解了靜態變量的聲明和訪問方式后,接下來通過一個案例來實現靜態變量內存分配圖中所描述的情況,如下例所示。
Example12.java
class Student { static String schoolName; //聲明靜態變量schoolName } public class Examplel2 { public static void main(String[] args) { Student stul =new Student (); //創建第1個學生對象 Student stu2 =new Student (); //創建第2個學生對象 Student.schoolName="清華大學"; //為靜態變量賦值 //分別輸出兩個學生對象的信息 System.out.println("我是"+stul.schoolName+"的學生"); System.out.println("我是"+stu2.schoolName+"的學生"); } }
Student類中定義了一個靜態變量schoolName,用于表示學生所在的學校,它被所有的實例對象所共享。由于schoolName是靜態變量,因此可以直接使用Student.schoolName的方式進行調用,也可以通過Student的實例對象進行調用,如 stu2.schoolName。第8行代碼將變量schoolName賦值為“清華大學”后,學生對象stul和stu2的 schoolName 屬性值均為“清華大學”。
需要注意的是static關鍵字只能用于修飾成員變量,不能用于修飾局部變量,否則編譯會報錯,例如下面的代碼是非法的。
public class Student { public void study() { static int num =10; //這行代碼是非法的,編譯會報錯 } }