java - 循环内变量声明与同一变量名的多个声明

标签 java variables scope syntax-error

以下代码给出错误,因为变量 m 被定义了两次。

class one {
   public static void main(String args[]) {
     int m=10;
     int m=10;
   }
 }

但是当声明在循环内完成时,即使 m 仍然被定义了两次,也是可以的。

 class one {
   public static void main(String args[]) {
     for(int i=1;i<=2;i++) {
       int m=10;
     }
   }
 }

并且编译器不会返回错误消息。
你能解释一下两者之间的区别吗?为什么有时我可以在同一个方法中声明同一个变量两次,有时却不能?

最佳答案

对于第一种情况,m 会被引用到 main 方法的末尾,因此同一作用域中不能有两个同名的变量。

而在第二种情况下,每次循环执行时,最后一次迭代的 m 不再被引用,因此您可以重新声明并重新初始化它。

关于java - 循环内变量声明与同一变量名的多个声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12654916/

相关文章:

java - 从 jar 主类运行第二个代码(jar)

java - 编辑外部存储中的文件

java - 以与 Java 中变量类似的方式使用对象

javascript - onsubmit 返回 validateForm 未触发

Java - 使用 Jena APi - 从 RDF 文件获取数据

java - 如何异步调用多个可观察的调用,同时在这些调用之前和之后同步执行一些计算?

java - 移动 3 个对象但保持它们对齐的公共(public)方法

javascript - 如何刷新存储和快照的 jquery 选择器变量

r - 我应该如何在 R 中调用 model.frame?

c - Ruby 中没有操作范围?