每當一個變數被宣告為靜態時,這表示整個類別只有它的一個副本,而不是每個實例都有自己的副本。
靜態變數
聲明靜態變數時,將建立該變數的單一副本,並在類別層級的所有物件之間共用。靜態變數本質上是全域變數。該類別的所有實例共享相同的靜態變數。
靜態變數的注意事項
我們只能在類別層級建立靜態變數。
靜態區塊和靜態變數按照它們在程式中出現的順序執行。
靜態變數只需藉助類別就可以直接調用,我們不需要在this中為類別建立物件。
// Java program to demonstrate execution // of static blocks and variables class Test { // static variable static int a = m1(); // static block static { System.out.println("Inside static block"); } // static method static int m1() { System.out.println("from m1"); return 20; } // static method(main !!) public static void main(String[] args) { System.out.println("Value of a : " + a); System.out.println("from main"); } }
上述程式碼的結果:
from m1 Inside static block Value of a : 20 from main
靜態方法可以使用類別名稱呼叫另一個靜態方法或變數。他們無法呼叫實例方法或變數。
實例方法可以使用類別名稱或引用變數來呼叫靜態方法或變數。他們可以使用實例變數呼叫另一個實例方法或變數。
最終關鍵字
當 Final 關鍵字標記為靜態時,您無法覆寫它。在Java中,final關鍵字用來表示一個變數、方法或類別不能被修改或擴展。當一個變數被宣告為final時,它的值一旦初始化就不能改變。
設計靜態方法與欄位
靜態方法不需要類別的實例。它們在班級的所有用戶之間共享。實例方法的程式碼只有一份副本。類別的每個實例都可以多次呼叫它。
當類別第一次載入時,靜態變數將被分配記憶體。對於靜態變數方法,我們使用 className 而不是對象,例如 className.variable
有了靜態方法,呼叫者就不需要實例化物件來呼叫該方法。您也可以使用物件的實例來呼叫靜態方法。編譯器將檢查引用的類型並使用它而不是物件。
如果對非靜態方法進行靜態引用,您將收到編譯器錯誤。
只有實例方法可以在不使用引用變數的情況下呼叫同一類別上的其他實例方法。實例方法確實需要一個物件。
重點:
當 static 關鍵字是第一次賦值時,Final 變數可以重新賦值,例如,如果我們宣告一個 static Final 變量,這表示我們可以在 static 區塊中將其初始化一次。如果聲明了最終變數但從未初始化,我們會收到編譯器錯誤。
請隨意在下面的評論中添加您關於靜態和實例變數的知識。
以上是Java中的靜態變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!