Hag*_*gra 9 java variables loops
在Java中,我们不能在具有相同名称的另一个变量的同一范围内声明变量:
int someInteger = 3;
...
int someInteger = 13;
Run Code Online (Sandbox Code Playgroud)
语法错误,不编译.但是,如果我们把它放在一个循环中:
for (int i = 0; i < 10; i++) {
int someInteger = 3;
}
Run Code Online (Sandbox Code Playgroud)
生成没有错误,效果很好.我们基本上声明了相同的变量.是什么原因?在这背后我不了解/理解的逻辑是什么?
Zho*_*gYu 11
想一想,在每次循环之后,范围被"破坏",变量就消失了.在下一个循环中,将创建一个新范围,并且可以在该范围内再次声明该变量.
出于类似的原因,你也可以这样做
{
int someInteger = 3;
}
{
int someInteger = 13;
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3444 次 |
| 最近记录: |