靜態方法注意事項
使用類的靜態方法時,注意:
a.在靜態方法裏只能直接調用同類中其他的靜態成員(包括變量和方法),而不能直接訪問類中的非靜態成員。這是因爲,對於非靜態的方法和變量,需要先創建類的實例對象後纔可使用,而靜態方法在使用前
不用創建任何對象。
b.靜態方法不能以任何方式引用this和super關鍵字,因爲靜態方法在使用前不用創建任何實例對象,當靜態方法調用時,this所引用的對象根本沒有產生(this關鍵字只能在方法內部使用,表示對“調用方法的那
個對象”的引用)。
靜態變量是屬於整個類的變量而不是屬於某個對象的。注意不能把任何方法體內的變量聲明爲靜態,例如: fun() { static int i=0;//非法。 }
public class StaticBlock {
static {
System.out.println("靜態塊");
}
{
System.out.println("構造塊,在類中定義");
}
public StaticBlock() {
System.out.println("構造方法執行");
}
public static void main(String[] args) {
new StaticBlock();
new StaticBlock();
}
}
程序運行結果:
靜態塊
構造塊,在類中定義
構造方法執行
構造塊,在類中定義
構造方法執行
總結:靜態代碼塊是在類加載時自動執行的,非靜態代碼塊是在創建對象時自動執行的代碼,不創建對象不執行該類的非靜態代碼塊。且執行順序爲靜態代碼塊------非靜態代碼塊----構造函數。