2015-03-25 78 views
-2
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循环什么呢通过在多次写相同的语句for循环但在宣布之后我试图做同样的事情变量j第二次编译器显示变量重新声明错误,但是这个错误没有出现在for循环中,即使它试图多次执行相同的语句为什么?为什么不循环显示变量重新声明错误

+0

因为循环是有效的java – 2015-03-25 01:07:30

回答

3

这是因为变量j的范围局限于循环的一次迭代。你的第二个代码并不完全等同于你的第一个“展开”循环。如果你想利用它完全等价的,周围添加每个模拟迭代大括号,就像这样:

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

现在你的代码可以编译和运行正确,产生相同的结果与原始代码段。

-1

它,因为你已经声明的变量J,你不要再与诠释

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

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

同样的事情发生在一个for循环正确的for循环重新声明变量时,它的第二次执行,所以我的问题是为什么不显示错误,然后呢? – 2015-03-25 01:09:14

0

basic for statement声明它具有以下格式

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

,或者more simply

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

初始化零件只执行一次。

初始化表达式初始化循环;它在循环开始时执行 一次。

初始化部分声明的变量范围在整个for声明,包括它的身体。