java - 对象1.toString() == 对象2.toString()

标签 java object reference tostring assignment-operator

下面是我的主要方法,其中比较两个对象引用。覆盖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. 引用 c1 与 c2 不同
  2. c1.toString().equals(c2.toString()) 是比较字符串的正确方法。

关于java - 对象1.toString() == 对象2.toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27186097/

相关文章:

c++ - 任何实例访问(一个类的)所有实例

javascript - Javascript中的Node接口(interface)是一个对象吗?

C#:存储对对象中数组位置的引用

mysql - 如何将一张Mysql表迁移为两张Mysql表

java - jaxws-maven-plugin、maven-enunciate-plugin 示例?

java - 如何使用用户类型在 JPA 中使用 Hibernate 持久化 JSR 310 java.time.LocalDateTime

javascript - 查找 JavaScript 对象中的重复值

.net - 在 .NET 中,对象引用的具体类型是什么?

java - java lambda 中的每个嵌套

java - 口水融合 : measure performance