Объявление многомерного массива

Какой из них является действительным утверждением?

  1. int[] x =new int[0]{};
  2. new int[2];
  3. int[] x=new int[][]{{1}}[0];
  4. int[][] x = new int[]{0}[0][0];
  5. int x= new int[2]{}[];

Правильный ответ - 3, и я могу понять, почему это не 1, 2 или 5, но я не понимаю 3 или 4.

2 ответа

1) int[] x =new int[0]{};

Вы не можете указать обе длины 0 и инициализатор массива одновременно.

2) new int[2];

Это не утверждение. Это стало бы утверждением, если бы оно было назначено на что-то еще, среди других возможностей.

3) int[] x=new int[][]{{1}}[0];

Это объявляет и инициализирует 1x1 2D массив, с 1 быть его единственным элементом. Затем доступ к массиву используется для немедленного доступа к "строке" в позиции 0, единственной такой "строке", которая сама является 1-мерным массивом длиной 1 и назначена 1-мерному массиву.

4) int[][] x = new int[]{0}[0][0];

Здесь много неправильного. Создается одномерный массив 1 длины, но есть два доступа к нему. Вы можете предоставить только один, потому что это одномерный массив.

5) int x= new int[2]{}[];

Экстра [] ничего не делает и имеет неверный синтаксис. Даже если они удалены, вы не можете назначить int массив в скаляр int, Также вы не можете указать длину и инициализатор массива {} в то же время.

  1. Когда вы объявляете и инициализируете массив, используя {} вам не разрешено указывать количество элементов в массиве ergo int[0] должно быть int[], Так и должно было быть int[] x = new int[]{},
  2. Это инициализация без объявления, поэтому это должно было быть что-то вроде int[] x = new int[2],
  3. Это правильно, потому что он присваивает объявление элементу двумерного массива, который сам является массивом. Таким образом, массив вернулся из new int[][]{{1}}[0] является new int[]{1} и поэтому int[] x = new int[]{1},
  4. Это совершенно неправильно и запутано. new int[]{0}[0][0] пытается получить значение двумерного массива из одномерного массива и присвоить его массиву x,
  5. Здесь, как уже обсуждалось в пункте 1, плюс попытка доступа к массиву с пустым индексом [] что не возможно.
Другие вопросы по тегам