【发布时间】:2013-01-07 13:00:27
【问题描述】:
我读到了这个Questions about Java's String pool 并了解字符串池的基本概念但仍然不了解行为。
首先:如果您直接分配值并且 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));
【问题讨论】:
-
@EJP Asker 提到了这个话题并说它没有回答他的问题。