Zachowanie puli ciągów

Przeczytałem toPytania dotyczące puli Java's String i zrozumieć podstawową koncepcję puli strun, ale wciąż nie rozumiem zachowania.

Po pierwsze: działa, jeśli bezpośrednio przypisujesz wartość, a zarówno s1, jak i s2 odnoszą się do tego samego obiektu w puli

String s1 = "a" + "bc";
String s2 = "ab" + "c";
System.out.println("s1 == s2? " + (s1 == s2));

Ale jeśli zmienię ciąg s1 + = "d", pula powinna mieć obiekt łańcuchowy "abcd"? wtedy kiedy zmieniam s2 + = "d", powinien znaleźć obiekt łańcucha "abcd" w puli i powinien przypisać obiekt do s2? ale nie ma i nie są one odnoszone do tego samego obiektu. Dlaczego?

String s1 = "abc";
String s2 = "abc";
System.out.println("s1 == s2? " + (s1 == s2));

s1 += "d";                  
s2 += "d";
System.out.println("s1 == s2? " + (s1 == s2));

questionAnswers(6)

yourAnswerToTheQuestion