Инициализация массива с использованием {} в Java
Мы можем инициализировать массив следующим образом:
int myArray[][] = { {10,20} ,{30,40} , {50} };
Он отлично работает.
Но я столкнулся с особой ситуацией.
int myAnotherArray[][] = { {,} ,{,} , {,} };
Вышеприведенная строка кода компилируется отлично. Это по мне странно. Потому что, когда компилятор будет анализировать это утверждение, он будет встречать {
и ,
и }
все вместе. Разве компилятор не должен ожидать постоянного или литерала между ними? Я был бы признателен, если бы кто-нибудь рассказывал мне, как точно анализируется вышеуказанный оператор и что именно делает компилятор, когда он сталкивается с такой ситуацией.
Ответы
Ответ 1
Это просто причуда того, что синтаксис позволяет использовать запятые.
Предоставление конечных запятых, например, для генераторов кода, генерирующих такие вещи, как { 0, 1, }
, и позволяет, например, удобно комментировать последнюю строку в
int[] myArray = {
0,
// 1
};
(Как вы могли понять, trailing ,
игнорируется, т.е. { , }
дает пустой массив.)
Связанные вопросы: