Значения по умолчанию переменных экземпляра и локальных переменных - PullRequest
15 голосов
/ 15 января 2010

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

Спасибо
Roger

Ответы [ 2 ]

27 голосов
/ 15 января 2010

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

1 голос
/ 15 января 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...