|
|
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, All Наконец приступил к изучение Java по учебнику Философия JAVA , в примере Bath (6-я глава) Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В результате, при выводе результатов получилось: castille = null; Кто нибудь может прокомментировать, в чем проблемма? Почему строку нужно обязательно объявлять как s = new String("Constructed"), а не String s = new String("Constructed"), и почему нельзя инициализировать объект, как Soap castille = new Soap(); Спасибо. ----------------- Denisov Alexander ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 14:57 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
Я каэша в Джаве ни бум-бум (честно говоря вообще не понял как меня сюда занесло, промахнулся разделом что ли), но по аналогии с другими языками могу сказать, что ты когда пишешь String s = new String("Contructed"), то ты объявляешь локальную переменную в методе и ее инициализируешь, а когда пишешь просто s = new String("Contructed"), то это ты в поле объекта, коее 3-мя строчками выше объявлено значение заносишь. Соответственно в первом случае по выходе из метода все проходит как белых яблонь дым, а во втором в поле объекта остается значение Сорри если что не так заранее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 15:31 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
ок, пасибо...может быть... ----------------- Denisov Alexander ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 15:59 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
s = new String("Constructed"); - Присвоение String s = new String("Constructed"); - Описание с присвоением. Если описуеш "ближе" с себе, то перекрываеш тех кто "дальше" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 16:05 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
to Nightwish> Вопрос несколько в другом был, почему объект castille не создался при такой конструкции: Soap castille = new Soap(); ----------------- Denisov Alexander ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 16:13 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
Он создался... только потом вышел из области видимости (не знаю что с ними в Джаве при этом происходит, разрушаются вестимо) - это ж ты локальную переменную объявил и присвоил Надо было написать просто castille = new Soap(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 22:19 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
Дело в том, что когда в конструкторе Bath() Вы написали Soap castille = new Soap(); то имели дело не с полем castille, а с локальной переменной castille, которая к указанному полю никакого отношения не имеет. А т.к. Java гарантирует инициализацию всех ссылок по умолчанию значением null, то поле castille, будучи не проинициализированным в конструкторе, и получило значение null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2004, 23:28 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
to ponomarevvb> Пасибо, теперь понятно....просто пока как-то не привычно :)... ----------------- Denisov Alexander ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2004, 00:27 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
ponomarevvb А т.к. Java гарантирует инициализацию всех ссылок по умолчанию значением null, то поле castille, будучи не проинициализированным в конструкторе, и получило значение null. У меня тогда вопрос, а почему нижеследующий код вызывает ошибку компиляции? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. По идее, если value инициализируется как null то почему все-таки, при наличии обработки Exception'а, требуется этой переменной явно присвоить значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 12:48 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
Denis PopovУ меня тогда вопрос, а почему нижеследующий код вызывает ошибку компиляции? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. По идее, если value инициализируется как null то почему все-таки, при наличии обработки Exception'а, требуется этой переменной явно присвоить значение? Локальные переменные не инициализируются null по умолчанию. Это (инициализация null (или 0, false для int, boolean) правило справедливо только для членов класса. Правильно писать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. или Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 12:58 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
Denis Popov ponomarevvb А т.к. Java гарантирует инициализацию всех ссылок по умолчанию значением null, то поле castille, будучи не проинициализированным в конструкторе, и получило значение null. У меня тогда вопрос, а почему нижеследующий код вызывает ошибку компиляции? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. По идее, если value инициализируется как null то почему все-таки, при наличии обработки Exception'а, требуется этой переменной явно присвоить значение? гарантирует инициализацию только полей объектов видимо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 13:00 |
|
||
|
Философия JAVA. Есть вопрос.
|
|||
|---|---|---|---|
|
#18+
Цитирую по книге "Философия Java": Java иногда нарушает своё обещание соответствующим образом инициализировать переменные перед их использованием. В случае с переменными, определёнными локально в методе, эта гарантия сводится к форме сообщения об ошибке: Код: plaintext 1. 2. 3. 4. ... Простейшие типы данных, описаные как поля класса, гарантированно получают начальное значение (в т.ч. ссылки на объекты инициализируются значением null - ponomarevvb). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2004, 15:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=32751556&tid=2153535]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 322ms |

| 0 / 0 |
