2015-12-27 96 views
1

我想在我的項目中嘗試下面的代碼。在for語句中刪除括號和for括號之間有什麼區別

import java.util.*; 
public class Test{ 
    public static void main(String [] args){ 
     for(int i=0;i<=10;i++) 
      Integer k = new Integer(i);//ERROR 
     System.out.println("Hello Word"); 
    } 
} 

然而,這個片段不能被編譯由該線引起的: 整數k =新的整數(I);

Integer k = new Integer(i); 

CHAGE到

{Integer k = new Integer(i);} 

這個片段將確定

我的問題:

什麼整數k =新的整數之間的差別(我);{Integer k = new Integer(i);}在我的代碼片段?

感謝

+2

一個很好的例子,什麼是「錯誤」? – Stultuske

+0

如果我的答案幫助了你,請接受它。如果您仍然有問題,請告訴我,我會爲您澄清事情。 :) – wuno

回答

0

變量聲明是不允許的!因爲變量的範圍未確定。所以,如果您添加括號,您的變量將在您的for循環中的作用域本地

1

請參閱this answer

您最初的聲明中的每個時間超出範圍的循環圈,使其失去作用。

括號創建一個新的作用域。

範圍定義

範圍指的是變量的生存期和可訪問性。範圍如何大取決於聲明變量的位置。例如對於 的例子,如果一個變量在一個類的頂部被聲明,那麼它將會對所有的類方法都是可訪問的。如果它在方法 中聲明,那麼它只能在該方法中使用。

Here是的範圍,超出範圍

// Demonstrate block scope. 
class Scope { 
    public static void main(String args[]) 
    { 
    int n1; // Visible in main 

    n1 = 10; 

    if(n1 == 10) 
    { 
    // start new scope 
    int n2 = 20; // visible only to this block 

    // num1 and num2 both visible here. 
    System.out.println("n1 and n2 : "+ n1 +""+ n2); 
    } 
    // n2 = 100; // Error! y not known here 

    // n1 is still visible here. 
    System.out.println("n1 is " + n1); 
    } 
} 
相關問題