2012-11-27 50 views
-2

可能重複:
Java String pool object creation字符串複製在java中

,如果我做

String one = "hai"; 
String Two = "hai"; 

是指串一個只(同一內存地址爲「線二海存儲「)或者是否在其他地方創建了」hai「的新副本並指出這一點?

+0

你能刪除這個問題或接受另一個答案嗎?我想刪除我的答案,系統不允許,因爲它是一個被接受的答案。 – Juvanis

回答

12
String one = "hai"; 
String two = "hai"; 

在Java中,字符串存儲在常量池因此,即使你將它們分配爲以上,他們仍將指向同一個對象。

+0

這是錨定在JLS還是恰好如此? –

+1

@JanDvorak JVM管理常量池中的String對象,並且如果您爲池中已有的值分配字符串,則您的字符串變量將通過JVM引用池中的值。 – Juvanis

+0

@RohitJain你看到我又是一個負面投票的問題頂部=) – Juvanis

8

這是同一個實例。您只是創建另一個對同一對象的引用

2

字符串二隻是指內存中的同一個對象。

0

兩個字符串變量指向堆內存中的相同數據。所以在堆內存中將一,二點串起來。

0

現在,即使你做到這一點

one=null; 

然後還「海」將保留在內存和可變兩人將參考該位置。 我希望它清除了這個概念。 :)