这样一段程序
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
怎么解释得通?谢谢!
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
怎么解释得通?谢谢!
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
记住这里比较的都是引用,非内容