static
靜態是在編譯時期就會在方法區中被分配出記憶體,之後才執行程序,直到程序結束後,才釋放該記憶體,生命週期隨著類的載入到結束
靜態可以訪問非靜態,因為生命週期較長的原因,同理, 非靜態類就不能訪問靜態
可以與類別、欄位、方法、屬性、運算子、事件和建構函式搭配使用
參考:https://ithelp.ithome.com.tw/articles/10213238
- 靜態類別僅包含靜態成員
- 不能使用new實體化
- 屬密封類別,無法被繼承
- 沒有執行個體,只能使用私有的建構函式,或者配合靜態建構函式
- 一般方法只有該類別實體可以叫用,靜態方法使用類別名稱後大家都可以叫用
靜態變數與一般變數的差別:
靜態變數:記憶體區塊是共用的,一次就只有一個值
public class Try { public static int a; public int b; }
Try try1 = new Try(); try1.b = 3; try1.a = 3; Try try2 = new Try(); try2.b = 5; try2.a = 5; System.out.println(try1.b); //3 System.out.println(try1.a); //5 System.out.println(try2.b); //5 System.out.println(try2.a); //5
try1.a的值一次只有一個,在try1賦的值,到try2被蓋過去了
且靜態的變數是不透過物件做使用,直接 【類別.變數】
靜態方法:不需要new出物件實體就可以使用類別中的方法
靜態代碼塊:再類的載入時,靜態塊會優先執行一次,僅類被載入的那一次。
一個類被載入時,對其中代碼執行的順序為:
父類靜態變數 → 父類靜態代碼塊 → 子類靜態變數→ 子類靜態代碼塊 → 父類非靜態變數 → 父類非靜態代碼塊 → 父類建構子 → 子類非靜態變數 → 子類非靜態代碼塊 → 子類建構子
全站熱搜