java - 同一范围内的同名局部变量,IDE 显示错误,但当我运行程序时,没有运行时错误结果

标签 java variables

据我所知,在同一作用域中声明同名的局部变量是非法的。我编写了这个非常简单的类,是的,IDE 确实在 int i = 10; 旁边显示了一个错误。但是当我运行代码时,一切似乎都很好。

public class VariableWithSameName {
    static void myMethod(int i){
        int i = 10; //error: variable i already defined in method 
    }

    public static void main(String[] args){

    }
}

只有当我调用myMethod时才发生运行时错误。

public class VariableWithSameName {
    static void myMethod(int i){
        int i = 10; //error: variable i already defined in method 
    }

    public static void main(String[] args){
        myMethod(1);
    }
}

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - variable i is already defined in method myMethod(int)

那么为什么运行第一个版本不会导致运行时错误?

最佳答案

因为在运行时。您从未将您的方法称为“VariableWithSameName”,这就是原因。仅当系统运行时出现错误时才会发生运行时错误。但是编译时错误将确定编译期间可能发现的所有可能的错误

关于java - 同一范围内的同名局部变量,IDE 显示错误,但当我运行程序时,没有运行时错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908687/

相关文章:

c++ - 帮助 - 从 .txt 文件加载数字到变量 (c++)

arrays - 如何在 Dockerfile 中分配数组?

java - PDFBox : Extraction of data from table

java - 聊天服务和持久性

java - 如何检查用户输入而不退出错误

java - Spring Boot - REST 和 SOAP 组合

java - 将项目导入到另一个工作区,包括运行配置

javascript - 非常简单的Javascript。这是什么: "options = options || {};"?

c - C 中的大整数?

vim - 将 vim 变量插入文本以获取注释快捷方式