В чем разница между пустым массивом и пустым массивом?

Если отдельные элементы массива int не инициализируются, что хранится в них по умолчанию? По-видимому, я обнаружил, что есть что-то вроде пустого массива или нулевого массива. В чем разница, и что относится к моему первому вопросу?

Ответ 1

Технически говоря, нет такой вещи, как нулевой массив; но поскольку массивы являются объектами, типы массивов являются ссылочными типами (то есть: переменные массива просто содержат ссылки на массивы), а это означает, что переменная массива может быть null вместо фактического указания на массив:

int[] notAnArray = null;

Пустым массивом является массив с нулевой длиной; он не имеет элементов:

int[] emptyArray = new int[0];

(и никогда не может иметь элементов, поскольку длина массива никогда не изменяется после его создания).

При создании непустого массива без указания значений для его элементов они по умолчанию имеют нулевые значения — 0 для целочисленного массива, null для массива типа объекта и т.д.; так что:

int[] arrayOfThreeZeroes = new int[3];

совпадает с этим:

int[] arrayOfThreeZeroes = { 0, 0, 0 };

(хотя эти значения могут быть повторно назначены впоследствии, длина массива не может измениться, но его элементы могут измениться).

Ответ 2

По умолчанию java инициализирует массив в соответствии с объявленным типом. Это int, тогда он инициализируется равным 0. Если он имеет тип объекта, такой как массив объекта, тогда он инициализируется нулем.

Ответ 3

Если отдельные элементы массива int не инициализируются, что по умолчанию хранится в них?

0

пустой массив - это массив с 0 элементами

Я не слышал о null массиве, но это, вероятно, массив с ненулевой ссылкой элемента, которые null

Ответ 4

В массиве его члены инициализируются значениями по умолчанию. Для int значение по умолчанию равно 0. Для Object it null. A null - это null Array Reference (поскольку массивы являются ссылочными типами в Java).

JLS-4.12.5 Начальные значения переменных в части

Для типа int значение по умолчанию равно нулю, то есть 0.

и

Для всех ссылочных типов (§4.3) значение по умолчанию равно null.