![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
в коде встречаются два способа объявления ссылок на свойства класса:
с инициализацией: StringBuffer st = null; без инициализации: StringBuffer st; Всегда пользовался первым способом, но выяснилось, что java сама инициализирует указатели null'em:
вывод: null как правильно и почему? ![]() |
|||
|
||||
aleksandy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 260 Регистрация: 17.12.2006 Репутация: 4 Всего: 5 |
Спецификация Java
Это сообщение отредактировал(а) aleksandy - 22.6.2010, 05:52 |
|||
|
||||
batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
И тем не менее, иногда нужно явно объявлять "= null".
Например, вот такой код приведет к ошибке компиляции:
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
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:35 |
|||
|
||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Похоже, свойства класса в java инициализировать null'em не надо. Во всяком случае я не нашел ни одного случая, где бы это было необходимо.
|
|||
|
||||
EnJ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 4.1.2010 Где: Харьков Репутация: нет Всего: нет |
При создании экземпляра класса вызывается конструктор по умолчанию(если даже явно не определить ни одного), который инициализирует переменные опять же по умолчанию
![]() Ты прав, что не надо их инициализировать, жаба за тебя это сделает, но не стоит так сильно полагаться на машину, ведь всякое бывает. По моему мнению, надо обязательно объявлять переменные, а не надеяться, что это за тебя кто-то другой сделает. |
|||
|
||||
Dummy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 9 Всего: 19 |
Не согласен. Java-разработчик прикладного уровня должен принимать специфицированное поведение JVM в качестве аксиомы, иначе он вообще не может быть ни в чём уверен. Где тогда гарантия, что JVM не интерпретирует строчку "int i = 5;" как инструкцию к форматированию диска? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Да, это я упустил из виду. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Dummy,
полностью согласен с тобой. Всем большое спасибо! ![]() Это сообщение отредактировал(а) priam220 - 22.6.2010, 22:29 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |