Java中equals()方法实例详解

yizhihongxing

Java中equals()方法实例详解

在Java语言中,Object类中的equals()方法用来比较对象的内容是否相等。相较于Java中的"=="运算符来说,它比较的不是变量在内存中的地址,而是变量的内 容。因此,equals()方法在很多时候比"=="更加实用。

equals方法的详细用法

public boolean equals(Object obj)

参数说明:
- obj:要比较的对象。

方法说明:若两个对象内容相等,则equals方法返回true;否则返回false。

示例1:比较两个String类型对象值是否相等

String s1 = "hello";
String s2 = new String("hello");
System.out.println(s1.equals(s2)); //true

示例2:比较自定义类对象是否相等

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 obj) {
        if (obj == this) { //判断引用是否指向同一个对象
            return true;
        }
        if (obj == null || obj.getClass() != getClass()) { //判断对象是否为null,以及类型是否匹配
            return false;
        }
        Person p = (Person) obj; //强制类型转换
        if (p.name == null || p.age != this.age) { //判断属性值是否相等
            return false;
        }
        return p.name.equals(this.name);
    }
}

Person p1 = new Person("Tom", 18);
Person p2 = new Person("Tom", 18);
Person p3 = new Person("Jack", 18);
System.out.println(p1.equals(p2)); //true
System.out.println(p1.equals(p3)); //false

equals方法注意事项

  1. 自反性:如果x != null,那么x.equals(x)一定是true。
  2. 对称性:如果x.equals(y)返回true,那么y.equals(x)也一定返回true。
  3. 传递性:如果x.equals(y)返回true,y.equals(z)也返回true,那么x.equals(z)也同样返回true。
  4. 一致性:如果x.equals(y)返回true,那么在x和y之间做任何操作,都应该保持一致性。
  5. 非空性:x.equals(null)应该总是返回false。

在自定义类中重写equals()方法时,应该满足以上几点规范,以保证程序的正确性。

总结

通过本文的讲解,我们了解了equals()方法的详细用法和注意事项,可以根据需求编写出适合自己的equals()方法。在实际开发中,判断对象内容是否相等时应该优先使用equals()方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中equals()方法实例详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringCloud Gateway 路由配置定位原理分析

    Spring Cloud Gateway是Spring Cloud生态系统中的一个API网关,它提供了一种简单而有效的方式来路由请求、过滤请求和转换请求。在本文中,我们将详细讲解Spring Cloud Gateway的路由配置定位原理分析。 路由配置 在Spring Cloud Gateway中,我们可以使用路由配置来定义请求的路由规则。路由配置由一个或多…

    Java 2023年5月18日
    00
  • Java面向对象的封装你了解吗

    Java的面向对象编程中,封装是指将功能和数据进行封装,使得外部无法直接访问、修改。封装有助于保护数据的安全性,同时也提高了代码的可维护性和可扩展性。 封装的实现主要是通过访问修饰符来控制属性和方法的访问权限。Java 中常用的访问修饰符包括 public、private、protected 和 default。其中,public 表示公开的,任何地方都可以…

    Java 2023年5月26日
    00
  • SpringData JPA基本/高级/多数据源的使用详解

    SpringData JPA基本/高级/多数据源的使用详解 简介 SpringData JPA是Spring框架下的数据访问层框架,它有很多特点:自定义查询方式、事务管理、动态查询语句生成、性能优化等。在本篇文章中,我们将会深入介绍SpringData JPA的基本用法、高级用法以及多数据源的使用详解。 基本用法 1. 实体类定义 在使用SpringData…

    Java 2023年6月2日
    00
  • java实现用户自动登录

    下面是详细讲解Java实现用户自动登录的完整攻略: 1. 概述 实现用户自动登录,是在用户登陆后,在保持用户会话的情况下进行下一次访问时无须再进行认证,而直接访问。通常采用的方法是将认证通过后的用户信息存储到用户的浏览器中,下一次访问时直接从浏览器中读取用户信息判断是否已经认证通过。 2. 实现步骤 2.1 登录成功信息存储 在用户登录认证成功后,将用户信息…

    Java 2023年5月19日
    00
  • Spring Boot高效数据聚合之道深入讲解

    Spring Boot高效数据聚合之道深入讲解 在本文中,我们将重点讨论如何使用Spring Boot高效地对数据进行聚合,并提供两个示例。 1. 聚合数据 聚合数据可以通过多种方式完成,而Spring Boot提供了多种机制来高效地将数据聚合在一起。下面列出了一些流行的方法: SQL JOIN:在关系型数据库中使用联接来合并数据。 NoSQL聚合管道:使用…

    Java 2023年5月20日
    00
  • Spring Mybatis 分页插件使用教程

    介绍 本文将介绍如何使用 Spring Mybatis 分页插件,在 Spring 框架中实现数据库分页查询。开发者可以通过本文学习了解基本的分页插件使用方法。 前置条件 在开始使用分页插件之前,确保已正确配置了 Spring 和 Mybatis,并在项目中引入了分页插件及其依赖。 步骤一:基本使用方法 1.在 Mybatis 配置文件中添加分页插件: &l…

    Java 2023年5月20日
    00
  • 十分钟速懂java知识点 System类

    十分钟速懂java知识点 System类 什么是System类? System类是Java中的一个工具类,提供了许多与系统和程序相关的方法和属性。它包含了标准输入/输出、错误输出、系统属性、系统时间等系统级别的操作。 System类的主要方法 System.out.println() 这是Java中最常用的输出方法。它可以将一段字符串或变量的值输出到控制台。…

    Java 2023年5月30日
    00
  • 详解JavaScript中数组的reduce方法

    下面我将详细讲解JavaScript中数组的reduce方法。 1. reduce方法是什么 reduce()是JavaScript中数组的一个方法,可以用来逐个处理数组中的元素,并返回一个累加结果,其语法如下: array.reduce(function(previousValue, currentValue, index, array){ // 处理当前…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部