действительно ли эти два являются тем же самым?
for(int i=0; i<array.length; i++){
array[i] = null;
}
и
array = null;
Небольшой фрагмент, чтобы показать разницу:
// declare a array variable that can hold a reference.
String [] array;
// make it null, to indicate it does not refer anything.
array = null;
// at this point there is just a array var initialized to null but no actual array.
// now allocate an array.
array = new String[3];
// now make the individual array elements null..although they already are null.
for(int i=0;i<array.length;i++)
{
array[i] = null;
}
// at this point we have a array variable, holding reference to an array,
// whose individual elements are null.
Нет, это не то же самое.
Фактически, для правильного выполнения первого фрагмента кода переменная массива должна быть объявлена и инициализирована следующим образом (например)
Object[] array = new Object[5];
Это создает массив из 5 элементов, каждый из которых имеет значение значение null
.
Получив это, в первом примере вы присваиваете нулевое значение каждому из элементов array [i]
. массив
не будет нулевым
. Итак, у вас должно получиться что-то вроде этого.
массив ->
Выполняя array = null
, вы говорите, что массив больше не ссылается на этот массив элементов. Теперь у вас должен быть массив
-> null
Вовсе нет.
В первом случае вы устанавливаете для всех ссылок в вашем массиве значение NULL.
Во втором случае вы устанавливаете для самой ссылки на сам массив значение null.
Нет, первый делает каждый элемент массива нулевым, длина массива по-прежнему будет array.length, вторая установит переменную массива обнулить.