我们能在Main
方法内声明Static
变量吗?因为我收到了一个错误消息:
Illegal Start of Expression
我们能在Main
方法内声明Static
变量吗?因为我收到了一个错误消息:
Illegal Start of Expression
显然不行。
在Java中,static
表示它是一个类的变量/方法,它属于整个类而不是其中某个特定的对象。
这意味着 static
关键字只能在“类范围”内使用,即它在方法内没有任何意义。
java
标签。 - Romanmain
方法(或任何其他方法)中使用静态变量,但需要在类中声明它们: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);
}
}
在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;
}
}
在牺牲一些美观度的情况下,更好的工程设计。
你不能这样做,为什么要这样做呢?你可以在类级别上声明它,这是它所属的位置。