【问题标题】:why can't I declare the same variable twice in Java?为什么我不能在 Java 中两次声明同一个变量?
【发布时间】:2015-12-03 00:03:38
【问题描述】:

这里有类似的问题,但他们并没有真正回答我的问题。

所以我很好奇为什么我们不能在 Java 中两次声明同一个变量?

例如:

  int a = 4;
  int a = 6;

这在 Java 中是行不通的。

然而在 javascript 中,这实际上是有效的:

var a = 1;
var a = 2;

在javascript中,人们说声明立即移到了开头,因此变成了这样:

var a;
a = 1;
a = 2;

【问题讨论】:

标签: javascript java


【解决方案1】:

简单而明显的答案是因为编译器不允许。但是现在让我们更进一步 - 为什么会这样呢?

这里的原因是两次声明一个变量是错误的标志。它通常意味着以下三件事之一:

  1. 您的变量名称不够具体。也许您使用了两次int length,它会向您吠叫。你可能应该让你的名字更具体地包含它的长度,例如int originalLengthint extendedLength 在复制数组或其他内容时。
  2. 您的方法太长。为什么你的方法这么长以至于你需要两个相同的变量?您可能会复制代码,因此请将其合并到一个方法中。
  3. 您还没有真正考虑过您的方法。这是对第 2 点的一种扩展,但事实是您应该在编写方法之前决定它的作用。如果您要添加一个已经存在的变量,这可能意味着您还没有确切地确定此方法在做什么。

其中每一个都是主要的代码异味,并且可能是未来错误的根源。 (而且不远了!)在每种情况下,允许您两次声明一个变量会导致歧义,如果它阻止您编译,则本可以避免这种歧义。

现在,这是否意味着没有可能是好的情况?当然。可能有。也许您已经涵盖了所有基础,并且您绝对确定可以重用该变量。在这种情况下,只需重新分配它而不是重新声明它。就个人而言,我不建议这样做,但如果你愿意,那就是你的脚。 :)

【讨论】:

    【解决方案2】:

    如果范围不重叠,您可以使用相同的变量名,例如,我可以在名为“var1”的私有方法中拥有一个变量,然后在另一个方法中拥有相同的东西,这两者不会冲突

    但是,由于每次我在同一范围内使用“int var1”,java 都会重新声明变量,它不会允许它,因为它是一个冲突的变量名,而在 java 脚本中,声明只发生一次,因为它是弱类型的

    【讨论】:

      【解决方案3】:

      现在它也已在 JavaScript 中使用新的 let 关键字进行了纠正或即兴创作 如果你尝试多次初始化同一个变量名,它会抛出一个错误

            let a = 4;
            let a = 5;
      

      会在 ES6 中抛出错误

      【讨论】:

        猜你喜欢
        • 2017-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 2020-05-16
        • 2019-08-28
        • 2014-11-09
        • 1970-01-01
        相关资源
        最近更新 更多