这样一段程序
public class HelloWorld {    public static void main(String[] args) {
        String t1 = "abcd";
        String t2 = "abcd";
        System.out.println(t1 == t2);
        String t3 = new String("abcd");
        System.out.println(t1 == t3);
        String t4 = new String("abcd");
        System.out.println(t3 == t4);
        String t5 = t4;
        System.out.println(t4 == t5);
    }
}
输出结果如下:
true
false
false
true
怎么解释得通?谢谢!

解决方案 »

  1.   

    String t1 = "abcd";
            String t2 = "abcd"; //这里t1,t2的引用是一样的,故输出为false
            System.out.println(t1 == t2);
            String t3 = new String("abcd"); //生成新的一个对象t3,虽然内容与t1,t2一样,但是引用不一样,故输出false
            System.out.println(t1 == t3);
            String t4 = new String("abcd");
            System.out.println(t3 == t4); //同上
            String t5 = t4;
            System.out.println(t4 == t5); //t5,t4指向同一个引用,即同一块内容区域,故true
    记住这里比较的都是引用,非内容