在Java循环中重新声明变量

在Java中,我们不能与另一个具有相同名称的变量在同一作用域中声明一个变量:

int someInteger = 3;

...

int someInteger = 13;

语法错误,无法编译。但是,如果我们将其放入循环中:

for (int i = 0; i < 10; i++) {

int someInteger = 3;

}

不产生错误,效果很好。我们基本上是在声明相同的变量。是什么原因?在此背后我不知道/不了解的逻辑是什么?

回答:

考虑一下这种方式,在每个循环之后,作用域被“破坏”,变量消失了。在下一个循环中,将创建一个新的作用域,并且可以在该作用域中再次声明该变量。

由于类似的原因,您也可以这样做

{

int someInteger = 3;

}

{

int someInteger = 13;

}

顺便说一句,Java不允许局部变量屏蔽,这可能会带来不便

int x = 3;

{

int x = 13; // error!

}

Consumer<Integer> consumer = (x)->print(x); // ERROR!

// lambda parameter is treated like local variable

Runnable r = ()->{ int x; ... } // ERROR

// lambda body is treated like local block

以上是 在Java循环中重新声明变量 的全部内容, 来源链接: utcz.com/qa/414978.html

回到顶部