關於static

    被static修飾的域成員稱爲靜態域成員,靜態成員是屬於類所有,而不是個別的對象。靜態變量與靜態方法的作用是爲了提供共享的數據或工具方法,例如將數學常用的常數或計算公式,以static聲明,之後可以把這個類當作工具類。通過類名稱來管理與取用這些靜態數據或方法,例如J2SE所提供的Math類,就有Math.PI這個靜態常數,以及Math.Sin()等靜態方法可以直接使用。

    由於靜態成員是屬於類而不是對象,所信當調用靜態方法時,並不會傳入對象的參考,即靜態方法中不會有this參考名稱。由於沒有this名稱,所以在Java的靜態方法中不允許使用非靜態成員。因爲沒有this來引用至對象,也就無法辨別要存取的是哪一個對象的成員。

    Java在使用到類時纔會加載類至程序中。如果在加載類時,希望先進行一些類的初始化工作,可以使用static定義一個靜態區塊,並在當中編寫類載入時的初始化工作。例如:

public class SomeClass {

    static {

        //一些初始化程序代碼

    }

    ...

}

    在類被加載時,預設會先執行靜態區塊中的程序中的程序代碼,且只會執行一次。例:

class A {

   static {

        System.out.println("類被載入");

    }

}

public class Test {

    public static void main(String[] args) {

        A a = new A();

    }

}

    類A只定義的靜態區塊,主要是爲了測試類被加載時是否執行訪區塊。在使用new來建立A的實例時,類A會被加載,加載之後預設會執行靜態區塊中的內容,所以程序執行結果會輸出“類被載入”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章