2014-12-15 4 views
10

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

+0

Вы можете иметь массив нулевой длины - не содержит элементов. У вас может быть ссылка на нулевой массив - ссылка равна null, а это означает, что массив не существует. У вас может быть массив с элементами, все из которых равны null - это значение по умолчанию для массива ссылок, когда оно изначально создано. –

ответ

18

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

int[] notAnArray = null; 

пусто массив представляет собой массив с нулевой длиной; она не имеет элементов:

int[] emptyArray = new int[0]; 

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

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

int[] arrayOfThreeZeroes = new int[3]; 

так же, как это:

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

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

0

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

0

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

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

1

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

0

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

JLS-4.12.5 Initial Values of Variables говорит частично

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

и

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

+0

Итак, для массива String это будет null, правильно? –

+0

@Quantitative Правильно. И для 'Integer []', но 'double []' будет по умолчанию 0 (будучи примитивным типом). –

+0

Индекс 0 в 'int [] a = new int [0]' не имеет ничего общего со значениями по умолчанию –