日期:2014-05-20  浏览次数:20685 次

对于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";