以下代碼片段中的代碼工作得很好。它計算使用int
類型的靜態字段cnt
創建的對象數。在Java中使用一對強制的大括號的單行循環
public class Main
{
private static int cnt;
public Main()
{
++cnt;
}
public static void main(String[] args)
{
for (int a=0;a<10;a++)
{
Main main=new Main();
}
/*for (int a=0;a<10;a++)
Main main=new Main();*/
System.out.println("Number of objects created : "+cnt+"\n\n");
}
}
它顯示以下輸出。
Number of objects created : 10
唯一的問題是,當我從上述for
環除去對花括號(見註釋for
環),一個編譯時錯誤發出指示
不是一個語句。
爲什麼在這種特殊情況下,一對大括號是強制性即使環路只包含一個語句?
'Main main = new Main();'是一個聲明,而不是一個語句。 – Mysticial 2012-07-22 17:43:29
@Mysticial:一個帶初始化的聲明。爲什麼初始化部分不是一個聲明? – Razvan 2012-07-22 17:50:26
@Razvan我看不出沒有技術上的原因。所以它似乎是來自Java或C/C++(其中Java繼承了其大部分基本語義)的設計選擇。 – Mysticial 2012-07-22 17:52:58