我正在尝试理解字符串常量池,了解字符串字面值对象在常量池中的管理方式。我无法理解为什么在下面的代码中我会得到false
, 其中s2 == s4
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abcd";
String s3 = "abc" +"d";
String s4 = s1 + "d";
System.out.println(s2 == s3); // OP: true
System.out.println(s2 == s4); // OP: false
}
"abc" +"d"
是一个编译时常量表达式,而s1 + "d"
则不是。 - johnchen902