Объявление многомерного массива
Какой из них является действительным утверждением?
int[] x =new int[0]{};
new int[2];
int[] x=new int[][]{{1}}[0];
int[][] x = new int[]{0}[0][0];
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
, Также вы не можете указать длину и инициализатор массива {}
в то же время.
- Когда вы объявляете и инициализируете массив, используя
{}
вам не разрешено указывать количество элементов в массиве ergoint[0]
должно бытьint[]
, Так и должно было бытьint[] x = new int[]{}
, - Это инициализация без объявления, поэтому это должно было быть что-то вроде
int[] x = new int[2]
, - Это правильно, потому что он присваивает объявление элементу двумерного массива, который сам является массивом. Таким образом, массив вернулся из
new int[][]{{1}}[0]
являетсяnew int[]{1}
и поэтомуint[] x = new int[]{1}
, - Это совершенно неправильно и запутано.
new int[]{0}[0][0]
пытается получить значение двумерного массива из одномерного массива и присвоить его массивуx
, - Здесь, как уже обсуждалось в пункте 1, плюс попытка доступа к массиву с пустым индексом
[]
что не возможно.