2015-03-25 44 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聲明,包括它的身體。

相關問題