24

配列初期化子は、コンパイル時に配列を初期化するために使用できます。以下に示すように、末尾にコンマが付いた初期化子は正常にコンパイルされます。

int a[][] = {{1,2,} ,{3,4,} , {5,6,},}; //Trailing commas cause no compiler error

for(int i=0;i<a.length;i++)
{
    for(int j=0;j<2;j++)
    {
        System.out.print(a[i][j]+"\t");
    }
    System.out.println();
}

出力:

1        2        
3        4        
5        6     

上記の説明で明らかなように、1次元配列でも合法です。

int[] b = {1, 2, 3, 4, 5, 6,}; //A trailing comma causes no compiler error

for(int i=0;i<b.length;i++)
{
    System.out.print(b[i]+"\t");
}

出力:

1        2        3        4        5        6

以下でも正当な構文であり、正常にコンパイルされます。

int c[][] = {{,} ,{,} , {,},}; 

コンパイラーは、コンマの前後に定数値(または別の初期化子)を期待する必要があります,。これはどのようにコンパイルされますか?コンパイラは単にそのようなコンマを無視しますか、それともそのようなシナリオで何か他のことが起こりますか?

4

1 に答える 1

32

末尾のコンマは無視されます。Java仕様から:

末尾のコンマは、配列初期化子の最後の式の後に表示される場合があり、無視されます。

于 2012-07-23T23:19:15.763 に答える