![]() |
|
Модераторы: 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. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |