2011-09-28 136 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