【发布时间】:2015-08-31 16:35:48
【问题描述】:
在Java中,我们不能声明一个变量与另一个同名的变量在同一范围内:
int someInteger = 3;
...
int someInteger = 13;
语法错误,无法编译。但是,如果我们把它放在一个循环中:
for (int i = 0; i < 10; i++) {
int someInteger = 3;
}
不会产生错误,效果很好。我们基本上是在声明相同的变量。是什么原因?我不知道/理解这背后的逻辑是什么?
【问题讨论】:
-
我们基本上声明了同一个变量。你是吗?您如何访问其先前的值?
-
垃圾回收。循环中的变量不再在程序执行的范围内。
-
@MalikBrahimi:循环内的变量确实不在循环外的范围内,但原因是不是“垃圾收集”。垃圾回收是指对分配有
new的对象进行处理。 -
Java 变量是块范围的。其余的,谷歌“Java shadowing”。