对于String对象的问题,希望大家指导我一下!
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"; //编译后s2=new StringBuilder.append("a").append("b").toString();,这是在堆上分配,s2引用的是堆上的"ab"
String s3 = "a" + "b"; //编译后s3="ab",在常量池,s3引用的常量池的"ab";