Строковые литералы, хранящиеся в пуле строк, уникальны?

Я понимаю, что строки могут быть интернированы, но это действие, которое выполняется религиозно, когда создается новый объект строки?

JLS раздел 3.10.5 строковые литералы.

1 ответ

Решение

Все String литералы идут в пул строк. В противном случае ваше приложение должно позвонить intern() на Stringили он не пойдет в бассейн.

String литерал - это строка, которая появляется в исходном коде с двойными кавычками:

String greeting = "Hello, ";
String s = greeting + name;

В этом примере "Hello, " это буквальная строка. Это в интернате. На него также ссылается переменная greeting,

String упоминается s не является литералом и не входит в пул интерна… если вы не сделаете этот вызов:

s = s.intern();
Другие вопросы по тегам