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