Java массив различие между null и пустой
Помогите раздбраться с определениями.
null - это ничего. когда массив бывает null?
однозначно когда arr[]=null.
когда массив объявлен int[] arr; до инициализции - будет ли он null?
после инициализации: если он числовой то заполнен 0, если ̶S̶t̶r̶i̶n̶g̶, короче Object, то заполнен null. Будет ли считаться, что массив тогда null?
Когда массив будет пустой? Ведь если он заполнен 0 то он не пустой.
Или ткните где это конкретно расписано.
Ответы (1 шт):
объяснить что такое null сложновато, тут надо понимание многих тем -примитивы и объекты, ссылки, область видимости(локальная, глобальная), области памяти(хип, стэк)и тд. и т.п и понять полностью это не получиться, это как учиться бегать не умея ходить и ползать.
если тезисно- null это отсутствие указателя(ссылки)
к примеру вот такой вот код
class Test {
public static void main(String[] args) {
int[] arr;
System.out.println(arr);//Variable 'arr' might not have been initialized
}
}
он даже не компилируется... а если так- тут разница в области видимости(локальная, глобальная)
class Test {
int[] arr;
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.arr);//null
}
}
... "пустой" массив означает, что массив указывает в какую-то область в хипе, но он пустой, в нём нет содержимого. class Test {
public static void main(String[] args) {
String[] arr = {}; // пусто
System.out.println(Arrays.toString(arr));//[]
}
}
и вроде везде написано что примитив не может быть null, но если сделать так
class Test {
public static void main(String[] args) {
Integer integer = null;
int i = integer;
System.out.println(i);
}
}
код скомпилируется и мы получим NullPointerException
тут надо теория и практика.
Начни с чтения Кэти Сьерра и Берт Бейтс - Изучаем Java там объяснения в картинках, визуализируя у себя в голове ссылки, объекты, процессы и тд. будет больше понимая.
и вот ещё статейкa
https://askdev.ru/q/chto-takoe-null-v-java-7604/