java中的static用法

      static關鍵字可以用於屬性,方法,自由塊以及內部類中。

a、靜態代碼塊   

      一般情況下,有些代碼必須在項目啓動的時候就執行的時候,需要使用靜態代碼塊,也就是靜態自由塊,這種代碼是主動(自動)執行的,需要在項目啓動的時候就初始化。

     舉個例子介紹靜態代碼塊:

    

輸出結果:

從結果我們可以看出,靜態代碼塊都是先於其他先執行的。一般來說,對象初始化順序爲:首先執行父類靜態的內容,父類靜態的內容執行完畢後,接着去執行子類的靜態的內容,當子類的靜態內容執行完畢之後,再去看父類有沒有非靜態代碼塊,如果有就執行父類的非靜態代碼塊,父類的非靜態代碼塊執行完畢,接着執行父類的構造方法;父類的構造方法執行完畢之後,它接着去看子類有沒有非靜態代碼塊,如果有就執行子類的非靜態代碼塊。子類的非靜態代碼塊執行完畢再去執行子類的構造方法。總之一句話,靜態代碼塊內容先執行,接着執行父類非靜態代碼塊和構造方法,然後執行子類非靜態代碼塊和構造方法。

b、靜態方法

        在不創建對象的情況下,其他程序來調用的時候,需要使用靜態方法,這種代碼是被動執行的。靜態方法在類加載的時候就已經加載,可以用類名直接調用。比如main方法就必須是靜態的,這是程序入口。
在使用靜態方法時,需要注意幾個問題:

1、在Java裏,可以定義一個不需要創建對象的方法,這種方法就是靜態方法。要實現這樣的效果,只需要在類中定義的方法前加上static關鍵字。例如:

public static int maximum(int n1,int n2)

尤其注意:

1)在靜態方法裏只能直接調用同類中其他的靜態成員(包括變量和方法),而不能直接訪問類中的非靜態成員。這是因爲,對於非靜態的方法和變量,需要先創建類的實例對象後纔可使用,而靜態方法在使用前不用創建任何對象。

2) 靜態方法不能以任何方式引用this和super關鍵字,因爲靜態方法在使用前不用創建任何實例對象,當靜態方法調用時,this所引用的對象根本沒有產生。

2、靜態變量是屬於整個類的變量而不是屬於某個對象的,所以注意不能把任何方法體內的變量聲明爲靜態。

3、一個類可以使用不包含在任何方法體中的靜態代碼塊,當類被載入時,靜態代碼塊被執行,且只被執行一次,靜態塊常用來執行類屬性的初始化。

c、靜態變量

d、靜態類

     通常一個類不允許聲明爲靜態類,只有內部類可以,此時這個聲明爲靜態的內部類可以直接作爲一個普通類使用,而不需要一個外部類。

例:

結果輸出爲:InnerUse

e、static與final結合使用

兩者結合來修飾成員變量和成員方法;

對於變量來說,表示一個靜態變量,也可以稱爲全局變量,通常常量的名字應該大寫,例如:static final int MAX_TAX_RATE=20;

對於方法來說,表示方法不可以在子類中覆蓋,通過類名可以訪問。

上面的內容總結於看的書,同時吸收了http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html和http://blog.csdn.net/anmei2010/article/details/4096131

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