Если отдельные элементы массива int не инициализированы, что хранится в них по умолчанию? По-видимому, я обнаружил, что есть что-то вроде пустого массива или нулевого массива. В чем разница, и что относится к моему первому вопросу?В чем разница между пустым массивом и пустым массивом?
ответ
Технически говоря, нет такой вещи, как нулевой массив; но так как массивы объектов, типы массивов являются ссылочными типами (то есть: переменные массива просто подержать ссылки на массивы), и это означает, что переменная массива может быть null
, а не на самом деле указывает на массив:
int[] notAnArray = null;
пусто массив представляет собой массив с нулевой длиной; она не имеет элементов:
int[] emptyArray = new int[0];
(и может никогда имеют элементы, так как длина массива не меняется после того, как он создан).
При создании нон -empty массива без указания значения для его элементов, они по умолчанию нулевого, как значениям — 0
для целого массива, null
для массива типа объекта и т.д.; так это:
int[] arrayOfThreeZeroes = new int[3];
так же, как это:
int[] arrayOfThreeZeroes = { 0, 0, 0 };
(хотя эти значения могут быть повторно назначены позже, длина массива не может изменить, но его элементы могут меняться).
Если отдельные элементы массива int не инициализированы, что хранится в них по умолчанию?
0
пустой массив массив с 0 элементами
Я не слышал о null
массив, но это, вероятно, массив с ненулевой ссылкой на элемент, которые являются null
По умолчанию java инициализировал массив в соответствии с объявленным типом. Он int тогда инициализируется равным 0. Если он имеет тип объекта, такой как массив объекта, тогда он инициализируется нулем.
В массиве есть члены, инициализированные их значениями по умолчанию. Для int
по умолчанию 0. Для Object
это null
. A null
массив - это null
Array Reference (поскольку массивы являются ссылочными типами в Java).
JLS-4.12.5 Initial Values of Variables говорит частично
Для типа INT, значение по умолчанию равно нулю, то есть 0.
и
Для всех ссылочных типов (§4.3) , значение по умолчанию равно null.
Итак, для массива String это будет null, правильно? –
@Quantitative Правильно. И для 'Integer []', но 'double []' будет по умолчанию 0 (будучи примитивным типом). –
Индекс 0 в 'int [] a = new int [0]' не имеет ничего общего со значениями по умолчанию –
Вы можете иметь массив нулевой длины - не содержит элементов. У вас может быть ссылка на нулевой массив - ссылка равна null, а это означает, что массив не существует. У вас может быть массив с элементами, все из которых равны null - это значение по умолчанию для массива ссылок, когда оно изначально создано. –