Подтвердить что ты не робот

Массивы с концевыми запятыми внутри инициализатора массива в 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[][] = {{,} ,{,} , {,},}; 

Компилятор должен ожидать постоянное значение (или другой инициализатор) после запятой и перед запятой ,. Как это скомпилировано? Компилятор просто игнорирует такие запятые или что-то еще происходит в таком сценарии?

4b9b3361

Ответ 1

Задняя запятая игнорируется. Из спецификации Java:

Заключительная запятая может появляться после последнего выражения в инициализаторе массива и игнорируется.