大家好 我是JAVA新手  遇到点问题嘿嘿
public class Test
{
public static void main(String[] args) {
String s4 = "bbb";
String s6 = "b";
String s7 = "bb";
System.out.println(s4 == (s6+s7));
}
}
为什么结果是false呢?

解决方案 »

  1.   

    =比较的是引用地址。s6+s7属于字符串变量连接,实质上是创建一个StringBuilder对象进行连接,然后在转化为一个在堆上的String对象,而s4指向字符串常量池中的对象,所以引用不相等。如果是(s6+s7).intern(),结果就是true,因为intern方法是使用常量池,如果常量池中有相应的字符串则返回。
      

  2.   

    我也是新手,但是我知道你这个 's4 == (s6+s7)'的比较是比较两个不同对象的内存地址,当然是false
      

  3.   

    如果是字符串常量进行连接的话会默认调用intern方法。比如:String s8="b"+"bb" 那么s8==s4返回true
      

  4.   

    字符串比较是否相同不能用“==” 要用 equals 方法