0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

java中的equals是什么意思

科技绿洲 来源:网络整理 作者:网络整理 2023-11-17 17:07 次阅读

Java中,equals是一个用于比较对象是否相等的方法。该方法来自于Object类,所有的Java类都继承了该方法。equals方法的默认行为是比较对象的内存地址,即判断两个对象是否是同一个对象。然而,在实际开发中,我们有时需要根据对象的内容来判断它们是否相等。

在Java中,equals方法的主要作用是用于比较两个对象是否相等。但要注意的是,equals方法和“==”操作符有所不同。“==”操作符用于比较两个对象的引用,也就是比较两个对象是否是同一个对象,而equals方法用于比较两个对象的内容是否相等。在大多数情况下,我们更关心对象的内容是否相等。

equals方法的签名是:public boolean equals(Object obj)。该方法接受一个参数obj,代表要比较的对象。equals方法返回一个boolean值,如果该对象与参数对象相等,返回true;否则返回false。

默认情况下,equals方法比较的是对象的内存地址,即它们是否指向同一个对象。如下面的示例所示:

String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2)); // false

由于String类重写了equals方法,使得字符串对象的内容相同,返回值为true。但是,由于我们创建了两个不同的字符串对象,它们的内存地址不同,所以默认的equals方法返回false。因此,我们通常需要重写equals方法,以便根据对象的内容来判断它们是否相等。

在重写equals方法时,我们需要遵循以下几个约定:

  1. 自反性:对于任何非空引用x,x.equals(x)应该返回true。
  2. 对称性:对于任何非空引用x和y,x.equals(y)应该返回true当且仅当y.equals(x)返回true。
  3. 传递性:对于任何非空引用x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)应该返回true。
  4. 一致性:对于任何非空引用x和y,多次调用x.equals(y)应该返回同样的结果,前提是对象上的信息没有修改。
  5. 对于任何非空引用x,x.equals(null)应该返回false。

此外,我们还需要重写hashCode方法以保持一致性。hashCode方法用于返回对象的哈希码,它在集合类如HashMap和HashSet中使用。

下面是一个示例,展示如何根据对象的内容重写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 otherPerson = (Person) obj;
return this.name.equals(otherPerson.name) && this.age == otherPerson.age;
}

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

public class Main {
public static void main(String[] args) {
Person person1 = new Person("John", 25);
Person person2 = new Person("John", 25);

System.out.println(person1.equals(person2)); // true
System.out.println(person1.hashCode() == person2.hashCode()); // true
}
}

在上面的示例中,Person类重写了equals方法,比较的是name和age字段的值。由于person1和person2的name和age字段相同,所以equals方法返回true。此外,它们的哈希码也相同,保持了一致性。

总结来说,equals方法是Java中用于比较对象是否相等的方法。它比较的是对象的内容而不是内存地址。在实际开发中,我们通常需要根据对象的内容重写equals方法,并保持与hashCode方法的一致性。这样,我们可以根据对象的内容来判断它们是否相等,并正确地在集合类中使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72765
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102994
  • 参数
    +关注

    关注

    11

    文章

    1398

    浏览量

    31471
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20123
收藏 人收藏

    评论

    相关推荐

    Java技术:046 教学视频 hashCode和equals方法#Java

    JAVA
    学习电子
    发布于 :2022年11月16日 09:27:08

    java rules下载/java规范中文版

    转义序列1.6.3 字符串直接量1.6.4 数值直接量1.6.5 类直接量1.7 分隔符1.8 操作符第2章 编译单元2.1 引言2.2 类体声明的术语2.2.1 Java对成员变量的定义
    发表于 06-23 18:16

    [转帖]java私塾教材资料大全(包括java初、、高级全套)

    java私塾教材资料大全(包括java初、、高级全套) 最近一直在看java私塾的视频,感觉很不错,讲解的很透彻,知识很深入,比起其他的视频难度大很多,但却是最符合企业要求
    发表于 04-01 17:15

    java私塾教材PDF(初、、高)

    java私塾教材PDF(初、、高) 找到了java私塾初级、中级、高级全部教材,打包分享一下,高级部分包括常用设计模式,初学就不用买书了,剩下一笔资金,o(∩_∩)o... 下载地址:http://u.115.com/file
    发表于 07-13 16:50

    Java的常用异常处理方法 java推荐

    Java,异常情况分为Exception(异常)和Error(错误)两大类,Java异常通常是指程序运行过程中出现的非正常情况,如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等
    发表于 01-19 17:26

    详解java代码优化方法

    使用LinkedList27. 不要让public方法中有太多的形参28. 字符串变量和字符串常量equals的时候将字符串常量写在前面29. 在javaif (i == 1)和if (1 == i
    发表于 04-02 15:43

    Hanlp分词实例:Java实现TFIDF算法

    。为了缩短时间,首先进行分词,一个词输出为一行方便统计,分词工具选择的是HanLp。然后,将一个领域的文档合并到一个文件,并用“$$”标识符分割,方便记录文档数。下面是选择的领域语料(PATH目录
    发表于 11-14 10:03

    Java的输入输出流盘点

    Java的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java
    发表于 07-11 07:56

    在rk3288 android系统的状态栏添加power按键的步骤有哪些呢

    ;对应的你要上报的按键键值,我这里用的空闲的F12base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
    发表于 05-16 09:38

    Java的类

    1.1 有关面向对象的概念1.2 Java语言的特点1.3 Java的开发环境1.4  第一个Java程序1.5 Java类型系统1.6
    发表于 04-28 14:23 0次下载

    JAVA教程之Java画图程序

    JAVA教程之Java画图程序,很好的JAVA的资料,快来学习吧
    发表于 04-11 17:28 13次下载

    Java中的计时攻击

    执行时间反推出密码的一些区域 。 简单理解,就是破解密码的人,通过不同的输入策略组合尝试去验证密码,得到不同的执行时间,从而反推出密码的区域,降低破解密码的难度。 下面可以使用Java简单描述一下。 我们看一下Java中的String
    的头像 发表于 09-25 15:29 383次阅读
    <b class='flag-5'>Java</b>中的计时攻击

    Javaequals 方法的实现方式

    Javaequals 方法用于比较两个对象是否相等。在默认情况下,Object 类中的 equals 方法实现是比较两个对象的引用是否相等,即比较内存地址是否相同。然而,对于自定义对象,在很多
    的头像 发表于 11-17 16:53 394次阅读

    javaequals怎么用

    Javaequals()方法是Object类中的方法,用于比较对象的内容是否相等。在默认情况下,equals()方法比较的是对象的引用,即判断两个对象是否是同一个实例。但是在很多情况下,我们希望
    的头像 发表于 11-17 16:56 381次阅读

    javaequals()方法的注意事项

    Java中的equals()方法是用于比较两个对象是否相等的方法。这个方法是在Object类中定义的,因此所有的Java类都默认地继承了equals()方法。然而,
    的头像 发表于 11-17 16:59 309次阅读