String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");
第一条语句打印的结果为 false,第二条语句打印的结果为 true
这是为什么呢?
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");
第一条语句打印的结果为 false,第二条语句打印的结果为 true
这是为什么呢?
因为s2与s1+“b”所对应的地址引用不同,“a”+“b”编译器会自动优化成ab,在常量池中,都是从常量池中取,所以对象地址引用值一样。