[英]How do I declare a static variable inside the Main method?
我們可以在Main
方法中聲明Static
變量嗎? 因為我收到一條錯誤消息:
Illegal Start of Expression
顯然,不,我們不能。
在Java中, static
意味着它是類的變量/方法,它屬於整個類,但不屬於某個特定對象。
這意味着static
關鍵字只能在“類范圍”中使用,即它在方法內部沒有任何意義。
您可以在main
方法(或任何其他方法)中使用靜態變量,但是您需要在類中聲明它們:
這很好:
public Class YourClass {
static int someNumber = 5;
public static void main(String[] args) {
System.out.println(someNumber);
}
}
這也沒關系,但在這種情況下, someNumber
是一個局部變量,而不是靜態變量。
public Class YourClass {
public static void main(String[] args) {
int someNumber = 5;
System.out.println(someNumber);
}
}
因為靜態變量在類加載時被分配內存,並且內存只分配一次。現在如果在方法中有一個靜態變量,那么該變量屬於方法的范圍,而不是類的范圍,並且JVM無法為它分配內存,因為一個方法是在類的對象的幫助下調用的,那是在運行時,而不是在類加載時。
由於靜態變量可用於整個類,因此在概念上它只能在范圍為全局的類之后聲明,而靜態塊或方法都有自己的范圍。
在C中,您可以靜態分配本地范圍的變量。 不幸的是,這不是Java直接支持的。 但是通過使用嵌套類可以實現相同的效果。
例如,允許以下內容,但這是糟糕的工程,因為x的范圍遠大於它需要的范圍。 此外,兩個成員(x和getNextValue)之間存在非明顯的依賴關系。
static int x = 42;
public static int getNextValue() {
return ++x;
}
人們真的想做以下事情,但這不合法:
public static int getNextValue() {
static int x = 42; // not legal :-(
return ++x;
}
不過你可以這樣做,
public static class getNext {
static int x = 42;
public static int value() {
return ++x;
}
}
以犧牲一些丑陋為代價是更好的工程。
你不能,你為什么要那樣做? 您始終可以在它所屬的類級別聲明它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.