为什么循环显示变量重新声明错误

时间:2015-03-25 01:04:37

标签: java

for(int i=0;i<2;i++){
        int j=i;
        System.out.println(j);
    }

    //same thing what a for loop does
/**********************************************/    
    int j=0;
    System.out.println(j);

    int j=1;
    System.out.println(j);

我有这个愚蠢的怀疑:我试图通过多次在for循环中写入相同的语句来做同样的事情,但是在第二次声明变量j之后编译器显示变量重新声明错误但是这个错误没有出现在for循环中,即使它试图多次执行相同的语句也是如此?

3 个答案:

答案 0 :(得分:3)

这是因为变量j的范围仅限于循环的单次迭代。你的第二个代码并不完全等同于你的第一个&#34;展开的&#34;环。如果您想完全等效它,请在每个模拟迭代周围添加花括号,如下所示:

{
    int j=0;
    System.out.println(j);
}
{
    int j=1;
    System.out.println(j);
}

现在您的代码将正确编译并运行,从而产生与原始代码段相同的结果。

答案 1 :(得分:0)

basic for statement具有以下格式

BasicForStatement:
for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement 

或,more simply

for (initialization; termination;
     increment) {
    statement(s)
}

初始化部分只执行一次。

  

初始化表达式初始化循环;它被执行了   一旦,循环开始。

初始化部分中声明的变量在整个for语句的范围内,包括其正文。

答案 2 :(得分:-1)

因为你已经声明了变量J,所以你不用int

再次声明它
int j=0;
    System.out.println(j);

     j=1;
    System.out.println(j);*