2011-09-28 134 views
1

我明白字符串进行拘留,但它创造了一个新的String对象时所宗教进行的动作?存储在字符串池中唯一字符串lliterals?

JLS节3.10.5字符串文字。

+0

_new_字符串文字? – Bwmat

+0

而且那些串x = “ZZZ”; –

+1

@Chin。 'String x =“zzz”'不会创建一个新的字符串对象。 –

回答

6

全部String文字进入字符串池。否则,你的应用程序必须调用intern()String,否则将无法进入游泳池。

String一个文字是出现在源代码用双引号它周围的字符串:

String greeting = "Hello, "; 
String s = greeting + name; 

在这个例子中,"Hello, "是字符串。它在实习生池中。它也被变量greeting引用。

s所指的String不是字面意思,也不在实习生池中......除非你打这个电话:

s = s.intern(); 
+0

嗨埃里克森,有见地,我是否可以说实习生池==字符串池? –

+0

@ChinBoon是的,运行时使用的唯一'String'池是intern池。 – erickson