|
|
|
Как после этого 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:26 |
|
||
|
Как после этого String может называться immutable?
|
|||
|---|---|---|---|
|
#18+
Mr.GeniusЯ понимаю, что при компиляции тут создаётся StringBuffer, затем вызывается append, и в конце toString(). Не совсем понимаете. StringBuilder создаётся только для присвоения внутри цикла. За пределами цикла его нет. И это не так важно. Mr.GeniusИ всё это потом превращается в сравнительно долго выполняющийся байт-код. Потому что каждая итерация в цикле создаёт новый объект String. Mr.GeniusНО! В чём тогда суть заявления, что String это immutable object, если можно производить такие операции? В том что у вас после работы цикла в памяти живет десяток объектов-строк. А если бы строка была mutable, тогда хватило бы и одного объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 12:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38585010&tid=2127510]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 514ms |

| 0 / 0 |
