在 Java 中的数组初始值设定项内带有尾随逗号的数组

2022-09-01 20:56:10

数组初始值设定项可用于在编译时初始化数组。带有尾随逗号的初始值设定项(如下所示)编译良好。

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     

一维数组也是合法的,与上述讨论一样明显。

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[][] = {{,} ,{,} , {,},}; 

编译器应该在逗号之后和之前期望一个常量值(或其他初始值设定项)。这是如何编译的?编译器是否只是忽略这样的逗号,或者在这种情况下发生了其他事情?,


答案 1

尾随逗号将被忽略。从 Java 规范中可以看出:

尾随逗号可能出现在数组初始值设定项中的最后一个表达式之后,并被忽略。


答案 2