class returntest
{
public static void main(String...args)
{
String name1 = "Test";
String s = new String("Test");
StringBuilder sb = new StringBuilder("Test");
System.out.println(name1.equals(sb)); //Line 1
System.out.println(name1.equals(s)); //Line 2
System.out.println(s.equals(sb)); // Line 3
System.out.println(s.equals(name1)); //Line 4
}
}
以下是输出结果。false
true
false
true
第一行返回并且第三行返回 false。
我不明白为什么编译器不认为"name1"和"sb"包含相同的值。
同样,编译器不认为"s"和"sb"包含相同的字符串(两者都是非原始类型)。
有人能解释一下第一行和第三行的输出吗?
name1.equals(s)
和第4行的s.equals(name1)
进行了相同的比较。 - Upulie Han