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出物件實體就可以使用類別中的方法

 

靜態代碼塊:再類的載入時,靜態塊會優先執行一次,僅類被載入的那一次。

一個類被載入時,對其中代碼執行的順序為:

父類靜態變數 → 父類靜態代碼塊    子類靜態變數 子類靜態代碼塊   父類非靜態變數  父類非靜態代碼塊   父類建構子 → 子類非靜態變數 → 子類非靜態代碼塊 → 子類建構子

 

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Lillian 的頭像
    Lillian

    安安的code日記

    Lillian 發表在 痞客邦 留言(0) 人氣()