java比较两个对象是否相等

java比较两个对象,可以通过重写equals()实现。

1.比较对象时, ==比较的是地址,而equals()比较的是对象内容

2.重写equals()方法必须重写hashCode()

示例代码如下:

Person.java

可以自动生成get()、set()、构造函数、equals()、hashCode等方法。

Idea选择类的代码,写入属性名,如下为name和age,然后右键-->Generate,就可以自动生成了。

eclipse类似。搜索下快捷键也可以自动生成。

复制代码
public class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name.equals(person.name);
    }

    @Override
    public int hashCode() {
        int result = name.hashCode();
        result = 31 * result + age;
        return result;
    }
}
复制代码
ObjectEquals.java如下所示
复制代码
public class ObjectEquals {
    public static void main(String[] args) {
        Person person1=new Person("lin",25);
        Person person2=new Person("lin",25);
        System.out.println("通过==比较对象:");
        if(person1==person2) {
            System.out.println("person1和person2是同一个人");
        }else {
            System.out.println("person1和person2不是同一个人");
        }
        System.out.println("通过重写equals()和hashCode()比较对象:");
        if(person1.equals(person2)) {
            System.out.println("person1和person2是同一个人");
        }else {
            System.out.println("person1和person2不是同一个人");
        }
    }
复制代码

结果如下所示:

posted on   乐之者v  阅读(27990)  评论(0编辑  收藏  举报

编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示