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/

→ Ссылка