在 Java 中,static 關鍵字表示「全局」或「靜態」的含義,可用於修飾成員變量、成員方法,還能形成靜態代碼塊。Java 沒有全局變量的概念,但被 static 修飾的成員變量和方法獨立於該類的任何對象,不依賴特定實例,而是被類的所有實例共享。只要類被加載,Java 虛擬機就能在運行時數據區的方法區中根據類名找到它們。因此,static 成員可以在創建任何對象之前訪問,無需引用對象,直接通過類名.成員的方式調用。
被 static 修飾的變量稱為靜態變量(類變量),未被修飾的則是實例變量。兩者的主要區別在於內存分配:
被 static 修飾的方法稱為靜態方法。它可以通過類名調用,任何實例也能調用。因為它在類加載時就已存在,不依賴任何實例,所以靜態方法必須有具體實現,不能是抽象方法。
靜態代碼塊(static { })在類加載時執行,且只執行一次,常用於初始化靜態資源。
static 方法。static 變量。this 和 super。static 變量在定義時必須初始化,且初始化時間早於非靜態變量。