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不是同一个人"); } }
结果如下所示:
分类:
其他--java
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库