字符串内存分配和字符串池概念

时间:2014-09-24 06:40:53

标签: java string memory-management string-pool

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

String b = "sunil" + "khokhar";

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

2 个答案:

答案 0 :(得分:2)

String b = "sunil" + "khokhar";

"sunil""khokar"连接在一起,b的值将在编译时解析。因此,"sunilkhokhar将出现在 String常量池中。 和

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

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

答案 1 :(得分:0)

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