当前位置: 首页 / 技术干货 / 正文
java的equals怎么用

2023-05-18

郑州 青岛

  Java中的equals()方法是用来比较两个对象是否相等的方法。默认情况下,它比较的是两个对象的内存地址。但是,我们通常希望比较的是对象的属性值是否相等。

  比较两个对象是否相等时,需要重写equals()方法。一般来说,我们需要比较对象的属性值是否相等,因此我们需要在equals()方法中使用对象的属性来比较。以下是一个例子:

public 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 o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}

@Override
public int hashCode() {
return Objects.hash(name, age);
}
}

  在这个例子中,我们重写了equals()方法,使用对象的属性name和age进行比较,如果两个对象的name和age都相等,则认为它们相等。同时我们也重写了hashCode()方法,以保证在使用哈希表等需要对象hashCode的场景下能够正常工作。

  当我们使用自定义类作为HashMap的key时,如果没有重写equals()方法,会使用默认的比较方式,比较的是对象的内存地址,这样就无法正确比较对象是否相等了。因此在使用自定义类时,一定要注意重写equals()方法。

好程序员公众号

  • · 剖析行业发展趋势
  • · 汇聚企业项目源码

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2021-04-12(深圳)

    开班盛况

    开班时间:2021-05-17(北京)

    开班盛况
  • 大数据+人工智能 <高端班>

    开班时间:2021-03-22(杭州)

    开班盛况

    开班时间:2021-04-26(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2021-05-10(北京)

    开班盛况

    开班时间:2021-02-22(北京)

    开班盛况
  • Python人工智能+数据分析 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2020-09-21(上海)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2019-07-22(北京)

    开班盛况
IT培训IT培训
在线咨询
IT培训IT培训
试听
IT培训IT培训
入学教程
IT培训IT培训
立即报名
IT培训

Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号