Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Право (хотя и смущает) иметь метод с тем же именем, что и класс, new
устраняет любую двусмысленность. new
указывает, что JVM должен вызвать метод инициализации экземпляра для данного класса и списка аргументов и вернуть инициализированный объект (ссылка на первый (скрытый) параметр метода инициализации).
Дизайнеры Java, вероятно, могли найти альтернативный синтаксис, но у них была цель дизайна, что любая память времени была выделена в куче, ее нужно вызывать явно, требуя ключевое слово new
. Вероятно, это кажется странным, но большинство целевой аудитории Java были программистами на C и C ++, которые были подозрительны к сбору мусора, и это означало, что разработчики не имели выделенной памяти без их ведома.