object1.toString()== object2.toString()

时间:2014-11-28 09:58:14

标签: java object reference tostring assignment-operator

下面是我比较两个对象引用的主要方法。在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是我的问题?

1 个答案:

答案 0 :(得分:1)

好吧,因为==比较了引用和

  1. 参考c1与 c2
  2. 不是相同
  3. c1.toString().equals(c2.toString())是比较字符串的正确方法。