次のプログラムは、それ自身の重要性はありません。以下に示すように、クラスカウンタ内の静的フィールドを使用してforループを使用して作成されたオブジェクトの数を数えます。Javaでのオブジェクト作成文では、単一行のループを使用できません。どうして?
package temp;
final class Counter
{
private static int cnt;
public Counter()
{
cnt++;
}
public static int show()
{
return(cnt);
}
}
final public class Main
{
public static void main(String[] args)
{
for (int i=0;i<50;i++)
{
Counter counter=new Counter();
}
/*for (int i=0;i<50;i++)
Counter counter=new Counter();*/
System.out.print("\nNumber of objects constructed:->"+Counter.show()+"\n\n");
}
}
ここでの唯一の問題は、(同じことがまた、whileループに適用される)、コンパイルの原因とまったく動作しないループのためのコメントは、ループの上記と同じ意味であります"ステートメントではない"がこの特定の状況では、forループに1つのステートメントのみが含まれていても、中括弧のペアは必須であることを意味します。どうして?
+1これをJLSから掘り起こすために+1します。 –
JasCavには正しいことがあります。宣言文は、標準的な命令文と同じではなく、ループ本体として単独では使用できません(if/elseの本体ではない可能性があります)。 –