main() 内的 block 没有单独的作用域,我是否正确?
例如,如果我执行以下操作,则会出现编译错误:
static int i = 1;
public static void main(String[] args) {
int i = 2;
{
int i = 3;
}
}
这是为什么?
最佳答案
当我尝试编译它时,我收到以下消息:
error: variable i is already defined in method main(String[])
这意味着 static int i = 1;
不会导致错误。 main
中第一个 i
的范围适用于整个 main,因此当您尝试在代码块中创建另一个 i
时,您会收到错误。
请注意,如果您在 block 中声明了 i
:
public static void main(String[] args){
{
int i = 2;
}
{
int i = 3;
}
}
您不会收到编译错误(请参阅 here )。
可以通过以下两种方式之一访问static int
:this.i
(不推荐)或ClassName.i
(推荐用于访问静态变量)
关于java - Java 中 main 内变量的作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21082665/