
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.03.2014, 12:26:46
|
|||
|---|---|---|---|
Как после этого String может называться immutable? |
|||
|
#18+
Всем привет. В Java я новичок, скажу сразу. Нашёл парадоксальный для меня пример: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код, разумеется, выводит "1111111111" Я понимаю, что при компиляции тут создаётся StringBuffer, затем вызывается append, и в конце toString(). И всё это потом превращается в сравнительно долго выполняющийся байт-код. НО! В чём тогда суть заявления, что String это immutable object, если можно производить такие операции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.03.2014, 12:33:25
|
|||
|---|---|---|---|
|
|||
Как после этого String может называться immutable? |
|||
|
#18+
Mr.GeniusЯ понимаю, что при компиляции тут создаётся StringBuffer, затем вызывается append, и в конце toString(). Не совсем понимаете. StringBuilder создаётся только для присвоения внутри цикла. За пределами цикла его нет. И это не так важно. Mr.GeniusИ всё это потом превращается в сравнительно долго выполняющийся байт-код. Потому что каждая итерация в цикле создаёт новый объект String. Mr.GeniusНО! В чём тогда суть заявления, что String это immutable object, если можно производить такие операции? В том что у вас после работы цикла в памяти живет десяток объектов-строк. А если бы строка была mutable, тогда хватило бы и одного объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2127510]: |
0ms |
get settings: |
14ms |
get forum list: |
32ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
59ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 298ms |
| total: | 499ms |

| 0 / 0 |
