Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Нужна помощь в пуле строк в Java


Автор: Sandeepkamra 14.7.2022, 15:38
Всем привет,
Я провел исследование String POOL в Java https://www.scaler.com/topics/java/string-pool-in-java/ и у меня есть сомнения, что я создал 2 строки в пуле строк без использования нового ключевого слова, как показано ниже.

Код

String s="abc";
String s1="def";


Я делаю еще один, соединяя более двух строк, как показано на рисунке.

Код

String s3=s+s1;
System.out.println(s3==s+s1);


результат обманчив.

Мне нужно знать цель результата, связана ли она с неизменностью, т.е. состояние строки не может быть изменено.

Ваша помощь будет оценена по достоинству. Заранее спасибо.

Автор: LSD 22.7.2022, 17:42
Строковые литералы всегда создаются в пуле.
Код

String s="abc";
String s1="def";

это будет создано в пуле.

При конкатенации строк неявно создается StringBuilder которым конкатенируются строки и у которого вызывается toString() это всегда создает новую строку.
Так что s3 это новая строка не в пуле и == s+s1 тоже новая строка, не s3.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)