在内存分配和字符串池方面,这两个分配有什么区别。
String b = "sunil" + "khokhar";
和
String a = "sunil";
String b = a + "khokhar";
在内存分配和字符串池方面,这两个分配有什么区别。
String b = "sunil" + "khokhar";
和
String a = "sunil";
String b = a + "khokhar";
String b = "sunil" + "khokhar";
两者"sunil"
和"khokar"
都将被连接起来,并且 的值b
将在编译时解析。因此,"sunilkhokhar
将出现在String 常量池中。和
String a = "sunil";
String b = a + "khokhar";
"sunil"
并且"khokar"
将是编译时常量(并被添加到字符串池中)。但是b = a+"khokhar"
将使用StringBuilder
并在运行时发生。因此,b
将出现在堆中而不是字符串常量池中。
每次您使用“+”和“=”创建新对象时,String 都是最终类。对于变量赋值,如果值已经存在于池中,那么引用将与对象一起返回。