java - Java 中 main 内变量的作用域?

标签 java syntax scope

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/

相关文章:

java - Spring boot 1.5.6 - 记录垃圾收集 Activity

java - YouTube 分析示例 java 程序,在允许用户同意并验证我的应用程序后,我收到 404 错误响应

arrays - Perl:对数组使用条件

c - 二进制常量前的keil uvision 5语法错误

JavaScript 范围 : passing a variable from an outer function to an inner function

异步函数中的Javascript 'New'对象的 'this'

java - 测试 jComobobox java swing 中的行

java - 使用 Lars Vogel "Eclipse Products and Deployment - Tutorial"创建 Eclipse RCP 应用程序

sql - 我希望我可以关联 "inline view"

reactjs - 在 ReactJS 组件中,当循环 props 数组时,我只能使用循环的简写语法。为什么是这样?