如果
,请告诉我内存区实际发生了什么String st1= "java";
String st2= St1+ "world";
如果写
String st1= new String("java");
然后将创建对象以及将存储此“java”的位置。它会创建两个对象还是会创建两个内存空间?
答案 0 :(得分:0)
This article应该回答你的问题。在第一个示例中,st1和st2将成为字符串公共池的一部分。在字符串公共池中,具有相同内容的两个字符串对象共享相同的内存空间。字符串是不可变的,因此st2不会与st1在同一空间中,也不会修改st1。
在第二个示例中,new运算符和字符串构造函数在堆中创建一个对象。堆中的字符串每个都有自己的内存空间,即使它们具有相同的内容。