如果我写String s1 =" java&#34 ;;字符串s2 = s1 +"世界&#34 ;;?

时间:2014-05-30 19:57:27

标签: java string

如果

,请告诉我内存区实际发生了什么
String st1= "java";  
String st2= St1+ "world";

如果写

String st1= new String("java"); 

然后将创建对象以及将存储此“java”的位置。它会创建两个对象还是会创建两个内存空间?

1 个答案:

答案 0 :(得分:0)

This article应该回答你的问题。在第一个示例中,st1和st2将成为字符串公共池的一部分。在字符串公共池中,具有相同内容的两个字符串对象共享相同的内存空间。字符串是不可变的,因此st2不会与st1在同一空间中,也不会修改st1。

在第二个示例中,new运算符和字符串构造函数在堆中创建一个对象。堆中的字符串每个都有自己的内存空间,即使它们具有相同的内容。