static簡單概述
static 關鍵字的基本使用,它可以用來修飾的成員變量和成員方法,一旦用了static關鍵字修飾,那麼這樣的內容不再屬於對象而是屬於類,凡是本類的對象都共享使用同一份。我們可以不靠創建對象來調用了。成員變量:操作各種空間。類變量:操作共享空間
static的使用
修飾成員變量
當 static 修飾成員變量時,該變量稱爲類變量。該類的每個對象都共享同一個類變量的值。任何對象都可以更改 該類變量的值,但也可以在不創建該類的對象的情況下對類變量進行操作。類變量:使用 static關鍵字修飾的成員變量。
定義格式:static 數據類型 變量名;
例如:
package demo03;
public class MyStudent {
//定義類變量
static String room;
}
修飾成員方法
當 static 修飾成員方法時,該方法稱爲類方法 。靜態方法在聲明中有 static ,建議使用類名來調用,而不需要 創建類的對象。調用方式非常簡單。 類方法:使用 static關鍵字修飾的成員方法,習慣稱爲靜態方法。靜態方法不屬於對象而是屬於類。
定義格式:
修飾符 static 返回值類型 方法名 (參數列表){
// 執行語句
}
例如:
package demo03;
public class MyStudent {
//定義靜態方法
public static void staticMethod() {
System.out.println("我是靜態方法");
}
// 成員方法
public void method() {
System.out.println("這是一個成員方法。");
}
}
如何使用靜態方法和類變量
如果沒有static關鍵字,那麼必須首先創建對象,然後通過對象才能使用它。如果有了static關鍵字,那麼不需要創建對象,直接就能通過類名稱來使用它。無論是成員變量,還是成員方法。如果有了static,都強烈推薦使用類名稱進行調用。對於靜態方法來說,可以通過對象名進行調用,正確,不推薦,這種寫法在編譯之後也會被javac翻譯成爲“類名稱.靜態方法名”。對於本類當中的靜態方法,可以省略類名稱。
- 訪問類變量格式: 類名.類變量名;
- 調用靜態方法格式: 類名.靜態方法名(參數);
靜態方法調用的注意事項:
- 靜態方法可以直接訪問類變量和靜態方法。
- 靜態方法不能直接訪問普通成員變量或成員方法。反之,成員方法可以直接訪問類變量或靜態方法。
- 靜態方法中,不能使用this關鍵字。
代碼舉例
package demo03;
public class MyClass {
int num; // 成員變量
static int numStatic; // 靜態變量
// 成員方法
public void method() {
System.out.println("這是一個成員方法。");
// 成員方法可以訪問成員變量
System.out.println(num);
// 成員方法可以訪問靜態變量
System.out.println(numStatic);
}
// 靜態方法
public static void methodStatic() {
System.out.println("這是一個靜態方法。");
// 靜態方法可以訪問靜態變量
System.out.println(numStatic);
// 靜態不能直接訪問非靜態【重點】
// System.out.println(num); // 錯誤寫法!
// 靜態方法中不能使用this關鍵字。
// System.out.println(this); // 錯誤寫法!
}
}
爲什麼靜態不能訪問非靜態?
static 修飾的內容:
- 是隨着類的加載而加載的,且只加載一次。
- 存儲於一塊固定的內存區域(靜態區),所以,可以直接被類名調用。
- 它優先於對象存在,所以,可以被所有對象共享。