0

在内存分配和字符串池方面,这两个分配有什么区别。

String b = "sunil" + "khokhar";

String a = "sunil";
String b = a + "khokhar";
4

2 回答 2

2
String b = "sunil" + "khokhar";

两者"sunil""khokar"都将被连接起来,并且 的值b将在编译时解析。因此,"sunilkhokhar将出现在String 常量池中。和

String a = "sunil";
String b = a + "khokhar";

"sunil"并且"khokar"将是编译时常量(并被添加到字符串池中)。但是b = a+"khokhar"将使用StringBuilder并在运行时发生。因此,b将出现在堆中而不是字符串常量池中

于 2014-09-24T06:56:47.117 回答
0

每次您使用“+”和“=”创建新对象时,String 都是最终类。对于变量赋值,如果值已经存在于池中,那么引用将与对象一起返回。

于 2014-09-24T07:05:53.200 回答