Подтвердить что ты не робот

Значения по умолчанию переменных экземпляра и локальных переменных

Я читал, что Java предоставляет значения по умолчанию для свойств класса, но не для локальных переменных. Это верно? Если да, то в чем причина этого? Когда вы делаете что-то хорошее, почему бы не сделать это до конца?

Спасибо,
Роджер

4b9b3361

Ответ 1

Стандартные локальные переменные хранятся в стеке и фактически не создаются до тех пор, пока они не будут инициализированы. Если локальная переменная не используется, она не переходит в стек. Однако переменные-члены выделяются в куче и, следовательно, имеют местозаполнитель по умолчанию (нулевая ссылка или примитив по умолчанию).

Ответ 2

Нетехническая причина также может быть следующей:

Если вы объявите локальную переменную, вы сделаете это, чтобы ее использовать. И использование связано с присвоением значения. Поэтому доступ к объявленной, но не инициализированной переменной не имеет большого смысла - программист мог просто забыть инициализировать переменную.

Поля, однако, могут использоваться только до или после указанной точки в жизни объекта. Принуждение программиста к их инициализации было бы не лучшим.