有人可以帮我理解Java中的范围规则吗?这显然无效:
{
int i = 0;
System.out.println(i); // fine, of course
}
System.out.println(i); // syntax error
i
在{}
内宣布,并且在外面无法使用。那么这个怎么样:
for (int i = 0; i < 10; i++) {
System.out.println(i); // fine, of course
}
System.out.println(i); // syntax error, same as above.
我对这里的语法错误感到惊讶。 i
在外部范围内声明,但稍后无法使用。它是否通过for
循环的某些特殊规则绑定到内部块范围?还有其他情况会发生这种情况吗?
答案 0 :(得分:6)
想到for循环实际上表示如下:
{
int i = 0;
while (i < 10) {
// your code
i ++
}
}
答案 1 :(得分:3)
是否通过for循环的一些特殊规则绑定到内部块范围?
是的,情况确实如此。
显然有局部变量声明:
class Some {
public void x( int i ) {
System.out.println( i ); // valid
}
int j = i; // not valid
}
另见:
来自语言规范。
答案 2 :(得分:0)
这是Java中for
循环的定义行为。
class ForDemo {
public static void main(String[] args){
for(int i=1; i<11; i++){
System.out.println("Count is: " + i);
}
}
}
注意代码如何声明 初始化中的变量 表达。这个变量的范围 从宣言延伸到 由for管理的块的结尾 声明,所以它可以用在 终止和增量表达式 同样。如果控制的变量 外面不需要for语句 循环,最好声明 初始化中的变量 表达。名称i,j和k是 经常用来控制循环; 在...中声明它们 初始化表达式限制了它 寿命延长,减少错误。
来源:http://download.oracle.com/javase/tutorial/java/nutsandbolts/for.html