У меня есть простой вопрос о строках в 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 имеет значение? Нужно ли что-то делать с помощью пула или просто вводить в заблуждение?
