我阅读了这个关于 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));