2016-06-27 62 views
2

在Java中,Java字符串常量池中

String s1 = new String("abc"); 
String s2 = new String("ab") + new String("cd"); 

威爾字符串 「ABC」 和 「ABCD」 的字符串常量池的創建?

回答

1

s1s2都不會指向常量池中的字符串,因爲您是通過顯式構造函數調用和串聯的組合創建它們的。只有字符串文字「abc」,「ab」和「cd」將在常量池中。

您需要明確intern()新實例。在這種情況下,s1 == "abc"將成爲現實。

+0

s2.intern(); String s3 =「abcd」;爲什麼s2 == s3在jdk1.7中是真的? – Bobby

+0

從s2開始,任何JDK都應該如此,s3應該在常量池中看到相同的實例。 –

+0

非常感謝,我終於明白了。 – Bobby