Java static意思

在Java中,static關鍵字具有以下幾種用途:

  1. 靜態變數(Static Variables): 當static關鍵字用於變數聲明時,它表示該變數是靜態的。這意味著在類的記憶體中只有一個這樣的變數,所有該類的對象共享這個變數。靜態變數可以通過類名直接訪問,也可以通過對象訪問。
public class MyClass {
    static int staticVar = 10;

    public void accessStaticVar() {
        System.out.println(staticVar);
    }
}

public class MainClass {
    public static void main(String[] args) {
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();
        System.out.println(MyClass.staticVar); // 通過類名訪問靜態變數
        obj1.accessStaticVar(); // 通過對象訪問靜態變數
    }
}
  1. 靜態方法(Static Methods): 當static關鍵字用於方法聲明時,它表示該方法是靜態的。靜態方法可以直接通過類名調用,而不需要創建類的實例。通常,靜態方法用於執行與類的功能相關的操作,而不是該類的特定實例。
public class MyClass {
    static int staticVar = 10;

    public static void staticMethod() {
        System.out.println(staticVar);
    }

    public void instanceMethod() {
        staticMethod();
    }
}

public class MainClass {
    public static void main(String[] args) {
        MyClass.staticMethod(); // 直接通過類名調用靜態方法
    }
}
  1. 靜態代碼塊(Static Blocks): 靜態代碼塊用於在類被載入時初始化一些靜態資源。當Java虛擬機(JVM)載入這個類時,會首先執行靜態代碼塊中的代碼。
public class MyClass {
    static int staticVar = 10;

    static {
        staticVar = 20;
    }
}
  1. 靜態導入(Static Imports): 使用static關鍵字可以導入類中的靜態資源,使得可以直接使用靜態變數和靜態方法,而不需要通過類名訪問。
import static java.lang.System.out;

public class MainClass {
    public static void main(String[] args) {
        out.println("Hello, World!"); // 直接使用靜態導入的out對象
    }
}

總結一下,static關鍵字用於創建靜態成員或靜態方法,這些成員或方法可以被類的所有實例共享,並且可以通過類名直接訪問。