Java基礎中static關鍵字
1. 概述
關於static關鍵字可以用來修飾成員變量和和成員方法,被修飾的成員是屬於類的,而不是單單屬於某個對象,因此不能用創建對象來調用
2. 定義和使用格式
類變量
當static修飾成員變量,就稱爲類變量。該類的每個對象都共享同一個類變量的值。任何對象都可以改變該類變量的值,但也可以在不創建該類的對象的情況下對類變量進行操作。
定義格式:
static 數據類型 變量名;
例如,班級裏的學生的學號,姓名,與個人有關,而班級人數與單獨的每個學生對象無關,而是與整個班級同學數量有關,於是定義靜態變量numberOfStudent,
public class Student {
private String name;
private int age;
// 學生的id
private int sid;
// 類變量,記錄學生數量,分配學號
public static int numberOfStudent = 0;
public Student(String name, int age){
this.name = name;
this.age = age;
// 通過 numberOfStudent 給學生分配學號
this.sid = ++numberOfStudent;
}
// 打印屬性值
public void show() {
System.out.println("Student : name=" + name + ", age=" + age + ", sid=" + sid );
}
}
public class StuDemo {
public static void main(String[] args) {
Student s1 = new Student("張三", 23);
Student s2 = new Student("李四", 24);
Student s3 = new Student("王五", 25);
Student s4 = new Student("趙六", 26);
s1.show(); // Student : name=張三, age=23, sid=1
s2.show(); // Student : name=李四, age=24, sid=2
s3.show(); // Student : name=王五, age=25, sid=3
s4.show(); // Student : name=趙六, age=26, sid=4
}
}
3. 靜態方法
當static修飾成員方法時,該方法稱爲類方法。靜態方法在聲明中有static ,建議使用類名來調用,而不需要創建類的對象。
- 類方法:使用 static關鍵字修飾的成員方法,習慣稱爲靜態方法。
定義格式:
修飾符 static 返回值類型 方法名 (參數列表){
// 執行語句
}
靜態方法注意事項:
- 靜態方法可以直接訪問類變量和靜態方法
- 靜態方法不能直接訪問普通成員變量或成員方法。反之,成員方法可以直接訪問類變量或靜態方法
- 靜態方法中,不能使用this關鍵字
- 靜態方法只能訪問靜態成員
調用格式
被static修飾的成員可以並且建議通過類名直接訪問。雖然也可以通過對象名訪問靜態成員,原因即多個對象均屬於一個類,共享使用同一個靜態成員,但是不建議,會出現警告信息。
格式:
// 訪問類變量
類名.類變量名;
// 調用靜態方法
類名.靜態方法名(參數);
3. 靜態原理圖
static修飾的內容:
- 是隨着類的加載而加載的,且只加載一次。
- 存儲於一塊固定的內存區域(靜態區),所以,可以直接被類名調用。
- 它優先於對象存在,所以,可以被所有對象共享。