public class Demo {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "Hello";
System.out.println("s1 == s2 " + (s1 == s2));
String s5 = "Hel" + "lo";
String s6 = "He" + "llo";
System.out.println("s5 == s6 " + (s5 == s6));
String s7 = "He";
String s8 = "Hello";
s7 = s7.concat("llo");
System.out.println("s7 == s8 " + (s7 == s8));
String s10 = "He";
s10 = s10 + "llo";
System.out.println("s1 == s10 "+(s1 == s10));
}
}
在前面的代码中 s7 == s8 和 s1 == s10 给出错误。有人可以解释一下吗,在 s7 = s7.concat ("llo"); 中实际发生了什么 和 s10 = s10 + "llo";我了解 == 运算符检查引用和 equal() 检查对象的内容。但我需要知道为什么 s7 和 s10 引用变量位模式与 s8 和 s1 不同。如果这些东西与编译时生成的字符串和运行时生成的字符串有关,那么我如何识别它是编译时字符串还是运行时字符串?