問題:爲什麼static 會比程序入口先執行?

問題:爲什麼static 會比程序入口先執行?

先來說static

static是靜態標誌,包括靜態代碼塊,靜態成員變量,靜態方法


在用static 方法前沒有創建任何對象,static是最先進行初始化的 ,所以有:
1. 靜態方法不能使用this關鍵字,因爲this指向當前對象。
2. 靜態方法內部不能調用非靜態方法和非靜態成員變量(非靜態方法內部可以調用靜態方法或靜態變量);


靜態方法的調用
1. 非靜態方法需要執行new來創建對象,數據存儲空間才被分配,其方法才供外界調用。
2. 靜態方法由於最先被初始化,最先被分配存儲空間,可以用類名.靜態方法名直接調用。


共享內存空間,直接用類名可以訪問

class StaticTest{
    static int i =47;
}

即使創建2個StaticTest對象,i也只有一份存儲空間,這兩個對象共享同一個i。


StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();

st1.i和st2.i指向同一份儲存空間,因此他們有相同的值47,如果修改i的值st1.i和st2.i同時改變

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