Java の文字列プールに関するこの質問を読み 、文字列プールの基本的な概念は理解していますが、動作はまだ理解していません。
最初: 値を直接割り当て、s1 と s2 の両方がプール内の同じオブジェクトを参照する場合に機能します
String s1 = "a" + "bc";
String s2 = "ab" + "c";
System.out.println("s1 == s2? " + (s1 == s2));
しかし、文字列 s1+="d" を変更すると、プールには文字列オブジェクト "abcd" が必要ですか? 次に、s2+="d" を変更すると、プール内の文字列オブジェクト "abcd" が検出され、そのオブジェクトが s2 に割り当てられるはずです。しかしそうではなく、それらは同じオブジェクトを参照していません。何故ですか?
String s1 = "abc";
String s2 = "abc";
System.out.println("s1 == s2? " + (s1 == s2));
s1 += "d";
s2 += "d";
System.out.println("s1 == s2? " + (s1 == s2));