个人技术分享

== 和 equals() 是在Java中比较两个对象是否相等的两种方式。

== 是一个运算符,用于比较两个对象的引用是否相等,即判断两个对象是否指向同一内存地址。当比较的对象是基本数据类型时,比较的是它们的值。例如:

int a = 5;
int b = 5;
System.out.println(a == b); // 输出 true

String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2); // 输出 false

equals() 是一个方法,用于判断两个对象的内容是否相等。它是由Object类提供的方法,所有的类都可以调用该方法,默认实现是比较两个对象的引用是否相等,即与==的作用相同。但是,大部分类都会重写equals()方法,用于根据对象的具体内容来决定相等的条件。例如:

String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1.equals(str2)); // 输出 true

在比较自定义类的对象时,我们通常需要重写equals()方法来比较对象的内容。例如:

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }

        if (!(obj instanceof Person)) {
            return false;
        }

        Person other = (Person) obj;
        return this.name.equals(other.name) && this.age == other.age;
    }
}

Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);
System.out.println(p1.equals(p2)); // 输出 true

总结而言,==比较的是两个对象的引用是否相等,而equals()比较的是两个对象的内容是否相等。在比较对象时,应根据具体的需求选择合适的比较方式。