2012-11-27 43 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; 

然后还“海”将保留在内存和可变两人将参考该位置。 我希望它清除了这个概念。 :)