|
|
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Denis PopovДавай его в FAQ, а в ТОПЕ указать первым пунктом, хорошенько выделив.готово: http://www.sql.ru/faq/faq_topic.aspx?fid=566 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 14:43 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Deadyа еще в топе 2 раза пункт "2", а пункта "3" нет давно туда смотрел? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 14:44 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
А.ГрасоffT wrote: > готово: http://www.sql.ru/faq/faq_topic.aspx?fid=566 Поместил. ИМХО неплохо бы рекомендации по книгам дополнить. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 15:00 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
вопиющая несправедливость! а где указан переводчик и спасибо ему????? и еще по пункту 9: его надо исправить в соответствии с комментарием в конце фака ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 15:08 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Deady > вопиющая несправедливость! а где указан переводчик и спасибо ему????? о, увидел. в самом начале мелкими буквами :-)))))) ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 15:09 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Deadyвопиющая несправедливость! а где указан переводчик и спасибо ему????? what's up man??? http://www.sql.ru/faq/faq_topic.aspx?fid=566 PS конец топика прочитал, а начало??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 15:09 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Deadyвопиющая несправедливость! а где указан переводчик и спасибо ему????? PS спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 15:10 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Deady 10. Использование объектов класса String как параметров метода. В Java класс java.lang.String хранит строковые данные. Однако, строки в Java (1) обладают постоянством (то есть их нельзя изменять), (2) являются объектами. Поэтому с ними нельзя обращаться как просто с буфером символов, это неизменяемые объекты. Иногда студенты передают строки, ошибочно расчитывая на то, что строка-объект будет передана как массив символов по ссылке (как в C или C++). Компилятор обычно не считает это ошибкой. Ошибочный пример . Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. В примере выше студент хочет изменить значение локальной переменной test1, присваивая новое значение параметру line в методе appendTodaysDate. Естественно это не сработает. Значение line изменится, но значение test1 останется прежним. Эта ошибка возникает из-за непонимания того, что (1) java объекты всегда передаются по ссылке и (2) строки в Java неизменяемы. Нужно осмыслить, что объекты-строки никогда не изменяют своего значения, а все операции над строками создают новый объект. прим. перев.вообще-то понять в чем ошибка не так просто. так как объекты передаются по ссылке, то значит line ссылается туда же, куда и test1. А значит создавая новый line, мы создаем новый test1. в неправильном примере все выглядит так, как будто передача String идет по значению, а не по ссылке. Так что, String передается по значению? Или по ссылке, но не изменяется? В чем конкретно ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 16:42 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
0sya > Так что, String передается по значению? Или по ссылке, но не > изменяется? В чем конкретно ошибка? в чем ошибка, описано в тексте - попытка измениить immutable. в Java все объекты передаются по ссылке, а String неизменяем. в итоге создается иллюзия передачи String по значению, а как это сделано - для меня немного непонятно. Обсуждал это с другими программерами. Думаю причина моего недопонимания - в том, что в Java нет указателей, а я пытаюсь трактовать данный пример с точки зрения указателей. Например, в C++ или Pascal данный пример точно бы изменил строку. ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 16:48 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. переменной line присваивается ссылка на только что созданный новый объект (конкатенация строк line и текущей даты). Ссылка на старый (неизменившийся) объект ("Today is ") утеряна (внутри данного метода). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:05 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
jdev333 Код: plaintext 1. 2. переменной line присваивается ссылка на только что созданный новый объект (конкатенация строк line и текущей даты). Ссылка на старый (неизменившийся) объект ("Today is ") утеряна (внутри данного метода).и? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:13 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
jdev333 > public static void appendTodaysDate(String line) { line = line + (new Date()).toString();} > переменной line присваивается ссылка на только что созданный > новый объект (конкатенация строк line и текущей даты). Ссылка на > старый (неизменившийся) объект ("Today is ") утеряна (внутри данного > метода).Тема==Ответить в конце концов я к этому и пришел ))) ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:14 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ jdev333 Код: plaintext 1. 2. переменной line присваивается ссылка на только что созданный новый объект (конкатенация строк line и текущей даты). Ссылка на старый (неизменившийся) объект ("Today is ") утеряна (внутри данного метода).и? тут еще наверное нужно знать, что когда объект передается в метод по ссылке, то на этот объект создается еще одна временная ссылка, именно с этой временной ссылкой и происходит работа в методе. В данном случае, новое значение (line + (new Date()).toString()) присвоено именно такой ссылке, которая при выходе из метода была убита, а иначе бы переменная line (глобальная), изменилась бы, даже несмотря на то, что создался новый объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:26 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
wessen А.Грасоff™ jdev333 Код: plaintext 1. 2. переменной line присваивается ссылка на только что созданный новый объект (конкатенация строк line и текущей даты). Ссылка на старый (неизменившийся) объект ("Today is ") утеряна (внутри данного метода).и? тут еще наверное нужно знать, что когда объект передается в метод по ссылке, то на этот объект создается еще одна временная ссылка, именно с этой временной ссылкой и происходит работа в методе. В данном случае, новое значение (line + (new Date()).toString()) присвоено именно такой ссылке, которая при выходе из метода была убита, а иначе бы переменная line (глобальная), изменилась бы, даже несмотря на то, что создался новый объект. и? ты это все к чему вообще пишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:27 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ wessen А.Грасоff™ jdev333 Код: plaintext 1. 2. переменной line присваивается ссылка на только что созданный новый объект (конкатенация строк line и текущей даты). Ссылка на старый (неизменившийся) объект ("Today is ") утеряна (внутри данного метода).и? тут еще наверное нужно знать, что когда объект передается в метод по ссылке, то на этот объект создается еще одна временная ссылка, именно с этой временной ссылкой и происходит работа в методе. В данном случае, новое значение (line + (new Date()).toString()) присвоено именно такой ссылке, которая при выходе из метода была убита, а иначе бы переменная line (глобальная), изменилась бы, даже несмотря на то, что создался новый объект. и? ты это все к чему вообще пишешь? вот тут человеку не совсем все понятно Deady в чем ошибка, описано в тексте - попытка измениить immutable. в Java все объекты передаются по ссылке, а String неизменяем. в итоге создается иллюзия передачи String по значению, а как это сделано - для меня немного непонятно. Обсуждал это с другими программерами. Думаю причина моего недопонимания - в том, что в Java нет указателей, а я пытаюсь трактовать данный пример с точки зрения указателей. Например, в C++ или Pascal данный пример точно бы изменил строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:35 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
wessenвот тут человеку не совсем все понятно:) а он об этом знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:45 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ wessenвот тут человеку не совсем все понятно:) а он об этом знает? о чем? о том, что ему чего то не понятно? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:47 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
wessen А.Грасоff™ wessenвот тут человеку не совсем все понятно:) а он об этом знает? о чем? о том, что ему чего то не понятно? :)да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:49 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
wessen > А.ГрасоffT wessenвот тут человеку не совсем все понятно:) > а он об этом знает? > о чем? о том, что ему чего то не понятно? :)Тема==Ответить вы гоните. вроде еще только понедельник. я уже примерно все понял, что и как. ))))) ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 17:49 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Deadyвы гоните. вроде еще только понедельник. я уже примерно все понял, что и как. ))))) Ну так объясни пожалста. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 20:49 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Osya Ну так объясни пожалста. :-) Код: plaintext 1. 2. 3. 4. 5. 6. 7. как я понял: пусть s указывает на адрес в куче: xxx. в момент вызова создастся новая переменная line, которая указывает на тот же адрес xxx. теперь на xxx указывают 2 переменные. при присваивании line нового значения создается новый объект String с адресом yyy, и line указывает на него. а s по прежнему указывает на xxx. Собственно поэтому метод и не работает так, как нужно. А создается новый объект с новым адресом, потому что String реализует паттерн Immutable. при компиляции этой строки: Код: plaintext 1. Код: plaintext 1. с обычными объектами такой номер не пройдет, потому что они не реализуют Immutable. то есть, например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. выведет: Код: plaintext 1. 2. 3. 4. 5. The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 10:31 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
объясни тогда вот это: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 10:45 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
так все понятно. person в сигнатуре метода - это копия переменной person из main, указывающей на объект, оперделенный в main. если мы обращаемся по этой переменной, то фактически обращаемся к старому объекту. если же мы присваиваем ей новое значение, то укывать она будет на новый объект, и работать мы будем с новым объектом. при этом указатель на старый объект не изменится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 11:04 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 11:42 |
|
||
|
ошибки начинающих java-программистов
|
|||
|---|---|---|---|
|
#18+
Deadyтак все понятно. person в сигнатуре метода - это копия переменной person из main, указывающей на объект, оперделенный в main. если мы обращаемся по этой переменной, то фактически обращаемся к старому объекту. если же мы присваиваем ей новое значение, то укывать она будет на новый объект, и работать мы будем с новым объектом. при этом указатель на старый объект не изменится. ... и поэтому, immutable здесь не причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 11:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33353217&tid=2151079]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
201ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 582ms |

| 0 / 0 |
