1:String对象如果内容相同,则两个String对象指向同样的实例。true
2:你应该是现比较了s1==s2,返回为true,然后true+s1 == s2,所以必然不同,返回false。
第三个没用过,还不清楚。

解决方案 »

  1.   

    此事告诉我们运算符优先记心中,+优先级大于==1.System.out.println("str == str1   "+ (str == str1));
    两个字面量相等,大家都知道2.System.out.println("str == str2  "+str == str2);
         "str == str2 abc"和"abc"相等才真的见鬼
    3.System.out.println("str == str2.intern() "+str == str2.intern());
       "str == str2.intern()  abc"必然和abc必然不等
      

  2.   

    主要是堆栈的区别,详细可以看下
    http://zhidao.baidu.com/link?url=4ie7-aJdG7zLOkGNgFrZ7WnwcTaeFUkpw8pJwZ6MDi7yduAZJvv-tOUJDj5Cx8oMPrsl-_NQ0653ZRzFSx3swq
      

  3.   

    把括号加上, 第三个会返回true(JDK6会返回false), 你看下JDK7里面intern()方法的描述, 不明白再问我
      

  4.   


    不好意思, 说错了, 你这里6跟7都会返回false,  这个例子演示不了6跟7intern()方法的不同。