Java中的范围规则

Mat*_*ard 2 java syntax braces

有人可以帮我理解Java中的范围规则吗?这显然无效:

    {
        int i = 0;
        System.out.println(i); // fine, of course
    }
    System.out.println(i); // syntax error
Run Code Online (Sandbox Code Playgroud)

i在内部声明{},并且在外面不可用.那么这个怎么样:

    for (int i = 0; i < 10; i++) {
         System.out.println(i); // fine, of course
    }
    System.out.println(i);  // syntax error, same as above.
Run Code Online (Sandbox Code Playgroud)

我对这里的语法错误感到惊讶.i在外部范围内声明,但稍后无法使用.是否通过一些特殊的for循环规则绑定到内部块范围?还有其他可能发生这种情况的情况吗?

ilu*_*uxa 6

想到for循环实际上表示如下:

{
  int i = 0;
  while (i < 10) {
    // your code
    i ++
  }
}
Run Code Online (Sandbox Code Playgroud)