У меня вопрос о каком-то странном строковом пуле.
Я использую ==
для сравнения равных строк, чтобы узнать, находятся ли они в пуле или нет.
public class StringPoolTest {
public static void main(String[] args) {
new StringPoolTest().run();
}
String giveLiteralString() {
return "555";
}
void run() {
String s1 = giveLiteralString() + "";
System.out.println("555" == "555" + "");
System.out.println(giveLiteralString() == giveLiteralString() + "");
}
}
Вывод:
true
false
что является большим сюрпризом для меня. Может ли кто-нибудь объяснить это, пожалуйста?
Я думаю, что что-то об этом происходит во время компиляции. Но почему добавление ""
в String вообще не имеет значения?