Сравнение строк с ==, которые объявлены окончательными в Java

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

Ответы на вопрос(5)

Ваш ответ на вопрос