У меня есть простой вопрос о строках в Java. Следующий сегмент простого кода просто конкатенирует две строки и затем сравнивает их с ==
.
String str1="str";
String str2="ing";
String concat=str1+str2;
System.out.println(concat=="string");
Выражение сравнения concat=="string"
возвращает false
как очевидное (я понимаю разницу между equals()
и ==
).
Если эти две строки объявлены как final
так,
final String str1="str";
final String str2="ing";
String concat=str1+str2;
System.out.println(concat=="string");
Выражение сравнения concat=="string"
, в этом случае возвращает true
. Почему final
имеет значение? Нужно ли что-то делать с помощью пула или просто вводить в заблуждение?