在Java中,static關鍵字可以用來修飾類的成員變量和成員方法。它具有以下幾種用法:
靜態成員變量屬于類本身,而不是屬于類的實例對象。它在類加載時就會被初始化,并且所有的實例對象共享同一個靜態變量。可以通過類名直接訪問,不需要創建對象。
public class MyClass {
public static int count; // 靜態成員變量
public static void main(String[] args) {
MyClass.count = 10; // 直接通過類名訪問靜態變量
System.out.println(MyClass.count);
}
}
靜態成員方法可以直接通過類名調用,無需創建類的實例對象。靜態方法中只能訪問靜態成員變量和調用其他靜態成員方法,不能直接訪問非靜態成員變量和調用非靜態成員方法。
public class MyClass {
public static void printCount() { // 靜態成員方法
System.out.println(MyClass.count);
}
public static void main(String[] args) {
MyClass.count = 10; // 直接通過類名訪問靜態變量
MyClass.printCount(); // 直接通過類名調用靜態方法
}
}
靜態代碼塊是在類加載時執行,只執行一次。可以用來初始化靜態變量或執行其他一次性的任務。
public class MyClass {
public static int count; // 靜態成員變量
static { // 靜態代碼塊
count = 10;
System.out.println("靜態代碼塊執行");
}
public static void main(String[] args) {
System.out.println(MyClass.count);
}
}
需要注意的是,靜態成員變量和靜態成員方法可以通過類名直接訪問,不需要創建對象,而非靜態成員變量和非靜態成員方法需要通過對象來訪問。