Согласно следующему Как Java Пул строк работает при объединении строк? разговор,
String a = "hello world!";
String b = "hello" + " world!";
boolean compare = (a == b);
Значение compare
должно быть истинным, что является правильным. Однако у меня есть следующий код
String s1 = "This is";
String s2 = " a new String";
String s3 = s1 + s2;
String s4 = "This is a new String";
При сравнении System.out.printf("s3 == s4:%s\n", s3 == s4);//always false
Всегда ложно. Насколько я понимаю, при объединении s1 и s2 s3 создаст строку в пуле, а когда будет создан s4, он будет указывать на то же местоположение пула. Но это не так. Я пробовал это с JDK 7,8 и 14, и результаты согласуются.