在Java中的数组初始值设定项中使用尾随逗号的数组

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

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

编译器应该在逗号之前和之前期望一个常量值(或另一个初始化器)。 这是怎么编的? 编译器是否只是忽略这样的逗号或在这种情况下发生的其他事情?

尾随逗号被忽略。 从Java规范 :

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