这是我的代码,我现在对此输出的字符串池和堆存储非常困惑.
public class String1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "abcd";
String str1 = "" ;
str1=str1+"abcd";
if(str.equals(str1))
System.out.println("True");
else
System.out.println("False");
if(str == str1)
System.out.println("True");
else
System.out.println("False");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在创建String str并将存储在字符串池中(如果我出错了,请纠正我!).现在,在str1使用字符串连接后,"abcd"它们都具有相同的值.所以,我认为strstr1应该在String池中有相同的引用,所以,第二个if语句应该打印true但是打印false.
那么,我的问题为什么str和str1没有得到相同的参考?