1. 程式人生 > >Java類中的Static關鍵字

Java類中的Static關鍵字

Java之關鍵字static:

  (1)在類中,變數的前面有修飾符static稱為靜態變數(類變數),方法的前面有修飾符static稱為靜態方法(類方法)。靜態方法和靜態變數是屬於某一個類,而不屬於類的物件。

  (2)可以直接通過類名引用靜態方法和靜態變數。
例如:類Point中有個類變數 static int x; 我們要引用它,則:Point.x=89;

  (3)在靜態方法中不能呼叫非靜態方法和引用非靜態的成員變數。反之,則可以。
原因:靜態變數和靜態方法在類被載入的時候就分配了記憶體空間,當非靜態的方法呼叫他們的時候,他們已經有了記憶體空間,當然是可以呼叫的咯!

  (4)如果沒有static,則需要先宣告一個類物件,然後通過這個類物件去呼叫其中的非靜態方法。
例如:假如在類Point的main()方法中要呼叫非靜態方法add(),則需要:
           Point x = new Point();  
           x.add(); 

    我們知道,在C/C++當中,這個main方法並不是屬於某一個類的,它是一個全域性的方法,所以當我們執行的時候,c++編譯器很容易的就能找到這個main方法,然而當我們執行一個java程式的時候,因為java都是以類作為程式的組織單元,當我們要執行的時候,我們並不知道這個main方法會放到哪個類當中,也不知道是否是要產生類的一個物件,為了解決程式的執行問題,我們將這個main方法定義為static,這樣的話,當我們在執行一個java程式碼的時候,我們在命令提示符中寫:java Point(Point為一個類),直譯器就會在Point這個類當中,去呼叫這個靜態的main方法,而不需要產生Point這個類的物件,當我們載入Point這個類的時候,那麼main方法也被載入了,作為我們java程式的一個入口。

 

所以,當一個方法或者變數需要初始化載入,或者是經常被呼叫的時候可以加上static。

有一個判斷靜態變數的小技巧:當看到 類名.XX 肯定是靜態的!


注意:1.用static修飾的方法可以用類名直接呼叫,不然一定要先例項化一個物件然後才可以呼叫
              比如 person這個類裡面有一個方法public static add(){}
              那麼可以直接用person類呼叫 person.add();當然也可以用下面的方法先出一個物件在呼叫也是可以
              如果這個方法前面沒有static 比如 public add(){}
              那麼先要person p=new person();
              然後用p.add();
           2.類載入器在載入這個類的時候就已經例項化了這個類。
缺點:初始化載入,比較佔記憶體,所以不經常用的方法,不建議加此關鍵字。

可參考部落格:https://www.cnblogs.com/dolphin0520/p/3799052.html