Сколько объектов String создано в Stringpool?
Рассмотрим следующий пример:
Строка s1 "Привет";
Строка s2 = "Мир";
Строка s3 = s2 +s3;
В приведенном выше примере, сколько объектов создано в Stringpool? Добавлена ли строка s3 в Stringpool или это отдельный объект в памяти кучи, или JVM создает новый объект в куче и добавляет его также в stringpool? Заранее спасибо:)
1 ответ
В этом случае 3 строки будут созданы в пуле строк. Один для Hello, один для WorLd и один для s3, который теперь HelloWorld, поскольку строки являются неизменяемыми.
Даже если вы делаете что-то вроде s1=s1+"World1"; тогда также это будет новая строка (HelloWorld1) в пуле строк, так как это будет новая строка, созданная для этой модификации, а старая ссылка s1 на Hello будет по-прежнему сохраняться в виде строки без ссылки.