我知道字符串是不可变的。但我对下面的代码有疑问:
class StringTest {
String s1 = "Joe";
String s2 = "Joe";
System.out.println(s1 == s2);
}
== 检查两者是否都被引用到相同的内存地址(如果我没有错)。如果是这样,即使两个字符串也被分配给两个不同的变量,为什么输出表示两者都被称为相同的存储器地址。
答案 0 :(得分:1)
Java使用intern pool来提高性能,因此这两个变量引用相同的String
。您可以使用new
来获取新的内容,例如
class StringTest {
public static void main(String[] args) {
String s1 = "Joe";
String s2 = new String("Joe");
System.out.println(s1 == s2);
}
}