下面是我的主要方法,其中比较两个对象引用。覆盖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 吗?
最佳答案
嗯,因为 ==
比较引用和
- 引用 c1 与 c2 不同
c1.toString().equals(c2.toString())
是比较字符串的正确方法。
关于java - 对象1.toString() == 对象2.toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27186097/