我們可以在Java的方法中宣告靜態變數嗎?


靜態欄位/變數屬於類,它將與類一起載入到記憶體中。您可以無需建立物件即可呼叫它們(使用類名作為引用)。在整個類中只有一個靜態欄位的副本可用,即靜態欄位的值在所有物件中都相同。您可以使用`static`關鍵字定義靜態欄位。

示例

public class Sample{
   static int num = 50;
   public void demo(){
      System.out.println("Value of num in the demo method "+ Sample.num);
   }
   public static void main(String args[]){
      System.out.println("Value of num in the main method "+ Sample.num);
      new Sample().demo();
   }
}

輸出

Value of num in the main method 50
Value of num in the demo method 50

方法中的靜態變數

方法中的變數是區域性變數,它們的範圍僅限於方法內,並且在方法執行後會被銷燬。也就是說,您不能在當前方法之外使用區域性變數,這與類/靜態變數的定義相矛盾。因此,在方法內宣告靜態變數沒有任何意義,如果您仍然嘗試這樣做,則會生成編譯時錯誤。

示例

在下面的Java程式中,我們嘗試在方法內宣告一個靜態變數。

import java.io.IOException;
import java.util.Scanner;
public class Sample {
   static int num;
   public void sampleMethod(Scanner sc){
      static int num = 50;
   }
   public static void main(String args[]) throws IOException {
      static int num = 50;
   }
}

編譯時錯誤

如果您嘗試執行上述程式,它將生成以下錯誤:

Sample.java:6: error: illegal start of expression
   static int num = 50;
  ^
Sample.java:9: error: illegal start of expression
   static int num = 50;
^
2 errors

更新於:2020年7月2日

6K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告