Java中.equals方法功能简介说明

欣喜 Java经验 发布时间:2023-11-23 15:50:45 阅读数:9500 1
下文笔者讲述equals方法的功能简介说明,如下所示

.equals方法简介

.equals方法
   是Java语言中Object类中的一个方法
   其功能是判断两个对象是否相等

equals方法定义

public boolean equals(Object obj) {
    return (this == obj);
}

其中this代表当前对象
    obj则是待比较的对象
    
   此处“==”
      是比较两个对象在内存中的地址是否相同

.equals方法的重写

对于用户自定义的类
    如果想要用equals方法进行对象比较
     需要重写equals方法
     
通常情况下
     我们会将equals方法重写为判断两个对象中某些属性值是否相等
例:
Person类的equals方法的重写示例
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person person = (Person) obj;
    return Objects.equals(name, person.name) &&
            Objects.equals(age, person.age);
}

.equals方法的使用

在Java中
    equals方法经常与==运算符混淆
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2);//输出true
System.out.println(str1 == str3);//输出false

而equals方法
  则用于比较两个对象的内容是否相同
    即实际值是否相等

例

String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1.equals(str2));//输出true
System.out.println(str1.equals(str3));//输出true
当然,在使用equals方法比较两个对象时,需要确保其重写实现正确无误。

.equals方法的注意事项

1、在重写equals方法时,需要遵循以下几个原则:

    自反性:
       对于任意的引用类型x,x.equals(x)应该始终返回true。
    对称性:
       对于任意的引用类型x和y,如果x.equals(y)返回true,那么y.equals(x)应该同样返回true。
   传递性:
      对于任意的引用类型x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)应该同样返回true。
   一致性:
       对于任意的引用类型x和y,如果对象x和y的状态没有发生变化,那么多次调用x.equals(y)应该返回相同的结果。
   非空性:
      对于任意的引用类型x,x.equals(null)应该始终返回false。
2、在比较两个对象时,
       需要根据具体情况选择适当的比较方式。
       在一些特殊的场景下
      
     例:
       比较时间、数组、Map等,需要采用特定的比较方式或者使用相关的工具类(如Arrays.equals())。

3、在使用自定义的类时
       需要注意该类是否已经重写equals方法
       如果没有重写,那么默认使用的是Object类的equals方法,此时比较的是对象在内存中的地址是否相同
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202311/17007258717354.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者