Строковые литералы, хранящиеся в пуле строк, уникальны?
Я понимаю, что строки могут быть интернированы, но это действие, которое выполняется религиозно, когда создается новый объект строки?
JLS раздел 3.10.5 строковые литералы.
1 ответ
Решение
Все String
литералы идут в пул строк. В противном случае ваше приложение должно позвонить intern()
на String
или он не пойдет в бассейн.
String
литерал - это строка, которая появляется в исходном коде с двойными кавычками:
String greeting = "Hello, ";
String s = greeting + name;
В этом примере "Hello, "
это буквальная строка. Это в интернате. На него также ссылается переменная greeting
,
String
упоминается s
не является литералом и не входит в пул интерна… если вы не сделаете этот вызов:
s = s.intern();