Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > инициализация свойств класса null'ем |
Автор: priam220 21.6.2010, 22:41 | ||
в коде встречаются два способа объявления ссылок на свойства класса: с инициализацией: StringBuffer st = null; без инициализации: StringBuffer st; Всегда пользовался первым способом, но выяснилось, что java сама инициализирует указатели null'em:
вывод: null как правильно и почему? ![]() |
Автор: aleksandy 22.6.2010, 05:51 | ||
http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.5
|
Автор: batigoal 22.6.2010, 10:48 | ||||
И тем не менее, иногда нужно явно объявлять "= null". Например, вот такой код приведет к ошибке компиляции:
|
Автор: priam220 22.6.2010, 11:07 |
batigoal, вот твой пример: public class Exmpl { String sb; public void run() { try { sb = "abc"; } catch( Exception ex ) { ex.printStackTrace(); } System.out.println( sb == null ); } } Вывод: false Речь идет о свойствах класса, а не о локальных переменных, на не определенность которых ругается сам компилятор. |
Автор: priam220 22.6.2010, 11:50 |
Похоже, свойства класса в java инициализировать null'em не надо. Во всяком случае я не нашел ни одного случая, где бы это было необходимо. |
Автор: EnJ 22.6.2010, 12:51 |
При создании экземпляра класса вызывается конструктор по умолчанию(если даже явно не определить ни одного), который инициализирует переменные опять же по умолчанию ![]() Ты прав, что не надо их инициализировать, жаба за тебя это сделает, но не стоит так сильно полагаться на машину, ведь всякое бывает. По моему мнению, надо обязательно объявлять переменные, а не надеяться, что это за тебя кто-то другой сделает. |
Автор: batigoal 22.6.2010, 15:53 |
Да, это я упустил из виду. |
Автор: priam220 22.6.2010, 22:12 |
Dummy, полностью согласен с тобой. Всем большое спасибо! ![]() |