下面是我比较两个对象引用的主要方法。在Car class中重写了toString()
方法后,我的问题是为什么下面的" if"当评估为真时,评估为假的条件。有人可以解释一下吗?感谢。
public static void main(String[] args){
Car c1 = new Car(2829,"white");
Car c2 = new Car(2829,"white");
if(c1 == c2)
System.out.println(true);
else
System.out.println(false);
String sc1 = c1.toString();
String sc2 = c2.toString();
if(sc1 == sc2)
System.out.println("it's equal");
else
System.out.println("it's not!");
}
public class Car {
private int regNo;
private String color;
protected void start(){
System.out.println("Car Started!");
}
public Car(int regNo, String color){
this.regNo = regNo;
this.color = color;
}
@Override
public String toString() {
return "Car-"+regNo;
}
}
说,我有两个字符串s1="abc" and s2 = "abc"
。现在,s1 == s2
评估为true,那么为什么上面的代码c1.toString() == c2.toString()
评估为false是我的问题?
答案 0 :(得分:1)
好吧,因为==
比较了引用和
c1.toString().equals(c2.toString())
是比较字符串的正确方法。