1

可能重复:
Java 中数组初始值设定项内带有尾随逗号的数组

为什么以下语句在 java 中是正确的:

int[][] a = { {1,2,}, {3,4}};

是否因为不必要的逗号应该是编译错误?

4

5 回答 5

5

Trailing comma在这样的数组初始化中ignored by compiler。这些通常是添加的,以便稍后在数组中添加一些东西,只需要添加元素而不用担心逗号。

这很奇怪,但被允许。

这也列在JLS - Section#10.6 (Array Initializers): -

数组初始值设定项以逗号分隔的表达式列表形式编写,用大括号 { 和 } 括起来。

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

于 2012-11-05T20:08:57.773 回答
4
{1,2,}

最后一个逗号后不必有元素。这适用于几种编程语言(JavaScript(按标准;IE 并不总是符合)、PHP、Java、Python、C# 3.5 等,我敢肯定)。

于 2012-11-05T20:08:11.930 回答
2

这个问题很可能是关于二维数组的第一个数组元素中的尾随逗号:{1,2,}. 根据Java 语言规范,这是有效的 java 语法:

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

于 2012-11-05T20:06:41.160 回答
1

不,这是一个多维数组。对于标准数组,您将拥有

int a[] = {1, 2, 3};

但这是多维的。也许这会有所帮助:

int a[][] = {
                {1, 2},
                {3, 4}
            }

所以现在a[0] = {1, 2}a[1] = {3, 4}

如果您指的是 中的最后一个逗号{1, 2,},那么在 Java 中就可以了。

于 2012-11-05T20:08:22.283 回答
0

它是一个嵌套数组 - 为什么会出现编译错误?

于 2012-11-05T20:07:19.380 回答