Поля классов (не final
в любом случае) инициализируются значениями по умолчанию. Локальные переменные не являются.
Не всегда необходимо назначать значение при объявлении поля. Поля, объявленные, но не инициализированные, будут установлены на разумный по умолчанию компилятор.
blockquote>Итак, поле (не
final
), подобноеf
вclass C { float f; }
, будет инициализировано
0f
, но локальная переменнаяf
вvoid myMethod() { float f; }
не будет.
Локальные переменные обрабатываются иначе, чем поля. Локальные переменные имеют ограниченное время жизни, поэтому любое использование перед инициализацией, вероятно, является ошибкой. Поля не так часто инициализируются по умолчанию.