首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 基礎核心:深入理解 static 關鍵字的變量與方法

     編輯:Java 相關知識

什麼是靜態成員?

在 Java 中,類成員通常需要通過對象實例來訪問。但有時我們希望定義一個成員,其使用完全獨立於該類的任何對象。在成員聲明前加上 static 關鍵字即可創建這樣的靜態成員。被聲明為 static 的成員,能夠在類的任何對象創建之前被訪問,無需引用特定實例。無論是方法還是變量,都可以聲明為 static。最經典的例子就是 main() 方法,因為程序啟動時必須調用它,所以它被聲明為靜態。

靜態變量的特性

聲明為 static 的變量實質上是全局變量。當創建類的對象時,不會產生該靜態變量的副本,而是該類所有實例共享同一個靜態變量。這意味著靜態變量屬於類本身,而非某個具體對象。

靜態方法的限制

靜態方法有以下重要限制:

  1. 它們僅能調用其他的靜態方法。
  2. 它們只能訪問靜態數據(靜態變量)。
  3. 它們不能以任何方式引用 this 或 super 關鍵字。

注意:在靜態方法中引用任何實例變量都是非法的,會導致編譯錯誤。

靜態初始化塊

如果需要通過計算來初始化靜態變量,可以聲明一個靜態塊(static { ... })。靜態塊僅在類被加載時執行一次。以下示例展示了包含靜態方法、靜態變量及靜態初始化塊的類:

// Demonstrate static variables, methods, and blocks.
class UseStatic {
    static int a = 3;
    static int b;
    static void meth(int x) {
        System.out.println("x = " + x);
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
    static {
        System.out.println("Static block initialized.");
        b = a * 4;
    }
    public static void main(String args[]) {
        meth(42);
    }
}

類加載後,靜態語句依序執行:先將 a 設為 3,執行靜態塊(輸出訊息),再將 b 初始化為 a*4(即 12)。隨後調用 main(),進而調用 meth(42),輸出三個變量值。

類外訪問靜態成員

在定義它們的類之外,靜態方法和變量能獨立於任何對象而被使用。只需在類名後加點號運算符即可,格式為:classname.method() 或 classname.variable。這就是 Java 實現受控全局功能和全局變量的方式。

class StaticDemo {
    static int a = 42;
    static int b = 99;
    static void callme() {
        System.out.println("a = " + a);
    }
}
class StaticByName {
    public static void main(String args[]) {
        StaticDemo.callme();
        System.out.println("b = " + StaticDemo.b);
    }
}

輸出結果:

a = 42
b = 99
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved