为什么我不能在 Java 中声明同一个变量两次?

wha*_*les 1 javascript java

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

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

例如:

  int a = 4;
  int a = 6;
Run Code Online (Sandbox Code Playgroud)

这在 Java 中实际上行不通。

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

var a = 1;
var a = 2;
Run Code Online (Sandbox Code Playgroud)

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

var a;
a = 1;
a = 2;
Run Code Online (Sandbox Code Playgroud)

cor*_*iKa 5

简单、明显的答案是因为编译器不允许你这样做。但现在让我们更进一步——为什么需要这样做?

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

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

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

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