当我使用双引号将 2 个字符串与(+
) 运算符连接并与具有相同值的其他字符串文字进行比较时,结果为true .. 但是当我连接 2 个字符串变量并比较时给出 false ?为什么会这样?
据我所知,当我们使用 (+) 运算符连接字符串时,JVM 会返回 new StringBuilder(string...).toString()
,它会在堆内存中创建一个新的 String 实例,并在 String pool 中创建一个引用。如果这是真的,它如何在一种情况下返回真而在另一种情况下返回假?
第一种情况:
String string1 = "wel";
String string2 = "come";
string1 = string1 + string2; //welcome
String string3 = "welcome";
System.out.println(string3 == string1); // this returns false but have same hashcode
第二种情况:
String string4 = "wel" + "come";
String string5 = "wel" + "come";
System.out.println(string4 == string5); // this returns true
有人可以帮我吗?