如何在循环中重新声明变量?

Dam*_*ora 2 java loops for-loop

此代码不起作用:

public class Test
{
    public static void main(String[] args)
    {
       int i=3;
       int i=4;
       System.out.println(i);   
    } 
}
Run Code Online (Sandbox Code Playgroud)

那为什么这段代码有效呢?

public class Test
{
    public static void main(String[] args)
    {
       for(int a=0;a<9;a++)
       {
           int b=a+1;
           System.out.println(b);
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

我们不是b一次又一次地重新宣布吗?

Era*_*ran 5

循环的每次迭代都有自己的范围,因此先前迭代的声明不再在当前迭代的范围内.

它相当于写作:

   {
       int b=1;
       System.out.println(b);
   }
   {
       int b=2;
       System.out.println(b);
   }
   {
       int b=3;
       System.out.println(b);
   }
   ....
Run Code Online (Sandbox Code Playgroud)