使用Java中的{}进行数组初始化

Kaz*_*ara 15 java arrays

我们可以像这样初始化一个数组:

int myArray[][] = { {10,20} ,{30,40} , {50} };
Run Code Online (Sandbox Code Playgroud)

它工作正常.

但我遇到了一个特殊的情况.

int myAnotherArray[][] = { {,} ,{,} , {,} };
Run Code Online (Sandbox Code Playgroud)

上面的代码行编译得很好.根据我的说法很奇怪.因为当编译器会分析该语句时,它会遇到{,}在一起.编译器不应期望中间的常量或字面值吗?如果有人告诉我如何解析上面的语句以及编译器在遇到这种情况时究竟做了什么,我将不胜感激.

aio*_*obe 24

这只是一个事实的怪癖,语法允许尾随逗号.

例如,允许尾随逗号对于生成诸如此类事物的代码生成器是友好的,{ 0, 1, }并允许您方便地注释掉最后一行.

int[] myArray = {
    0,
//  1
};
Run Code Online (Sandbox Code Playgroud)

(正如您可能已经想到的那样,尾随,被忽略,即{ , }产生一个空数组.)

相关问题:

  • 确切地说+1.如果您查看了数组的内容,您会看到所有子数组都是空的(演示:http://ideone.com/Pvg0G).C#的工作方式相同. (4认同)