`
ganglong99
  • 浏览: 161350 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Java对象的equals方法

阅读更多

大家都知道,在Java中,对于对象的比较,如果用“==”比较的是对象的引用,而equals才是比较的对象的内容。

 

一般我们在设计一个类时,需要重写父类的equals方法,在重写这个方法时,需要按照以下几个规则设计:

1、自反性:对任意引用值X,x.equals(x)的返回值一定为true.
2、对称性:对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;
3、传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true
4、一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变
5、非空性:任何非空的引用值X,x.equals(null)的返回值一定为false

 

例如:

public class People {
    private String firstName;

    private String lastName;

    private int age;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null) return false;
        if (getClass() != obj.getClass()) return false;
        People other = (People) obj;
        if (age != other.age) return false;
        if (firstName == null) {
            if (other.firstName != null) return false;
        } else if (!firstName.equals(other.firstName)) return false;
        if (lastName == null) {
            if (other.lastName != null) return false;
        } else if (!lastName.equals(other.lastName)) return false;
        return true;
    }
}

 

在这个例子中,我们规定一个人,如果姓、名和年龄相同,则就是同一个人。当然你也可以再增加其他属性,比如必须身份证号相同,才能判定为同一个人,则你可以在equals方法中增加对身份证号的判断!

分享到:
评论

相关推荐

    Java中equals方法隐藏的陷阱

    ### Java中equals方法隐藏的陷阱 在Java编程中,正确实现`equals`方法至关重要,它不仅影响对象的比较逻辑,还直接关系到集合类(如`HashSet`、`HashMap`等)的行为。本文将深入探讨Java中`equals`方法的一些常见...

    重写equals方法

    在 Java 中,equals 方法是一个非常重要的方法,它用于判断两个对象是否相等,而不是判断两个对象的引用是否相同。在 Object 基类中,equals 方法的实现是使用“==”操作符来比较对象的引用,但是这并不满足实际需求...

    java中equals和==的区别

    如果我们想要让 s2 也引用同一个对象,可以使用 intern() 方法: public class TestString { public static void main(String[] args) { String s1 = "Monday"; String s2 = new String("Monday"); s2 = s2....

    java中的==和equals()方法1

    在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...

    java中equals和==的区别.doc

    使用 intern() 方法可以将 s2 的值加入缓冲池中,这样可以避免创建新的字符串对象。 equals 和 == 是两个不同的运算符,它们之间的区别是非常重要的。我们应该根据实际情况选择合适的运算符,以避免编程中的错误。

    equals方法的重写.docx

    ### equals方法重写知识点解析 #### 一、equals方法简介 `equals`方法是Java语言中Object类的一个重要成员方法,其默认实现是比较两个对象的内存地址是否相同(即是否为同一个对象)。为了使对象之间能够基于内容...

    java 资料 equals 与== 的区别

    在上面的例子中,str1 和 str2 是两个字符串对象,equals 方法比较的是它们的值,因为它们的值相等,所以输出“对象 str1 和对象 str2 的值相等”。 == 运算符比较的是变量的值或内存地址,而 equals 方法比较的是...

    Java重写equals同时需要重写hashCode的代码说明

    Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.

    Java中equals,hashcode和==的区别

    默认情况下,equals 方法都是调用 Object 类的 equals 方法,而 Object 的 equals 方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。因此,如果我们想要比较两个对象的内容,我们需要重写 ...

    浅谈java 重写equals方法的种种坑

    Java 中的 equals 方法是一种用于比较对象是否相等的方法,它是 Object 类中的一个方法。然而,重写 equals 方法并不是一件简单的事情,因为它需要遵守一些约定,否则可能会出现一些不可预期的行为。在这篇文章中,...

    java中equals()函数的用法 equals和==的区别

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别对于编写出正确、健壮的代码至关重要。 首先,`==`运算符用于基本类型(如int, char, boolean)的比较,...

    Java equals 方法与hashcode 方法的深入解析.rar

    在Java编程语言中,`equals()`方法和`hashCode()`方法是两个非常重要的概念,它们主要用于对象的比较和哈希表的高效运作。本解析将深入探讨这两个方法的用途、实现原理以及它们之间的关联。 首先,`equals()`方法是...

    Java语言深入_equals

    这涉及到对Java对象模型的理解,以及如何根据对象的业务逻辑来定义“相等”的概念。通过遵循API规范和良好的编码习惯,我们可以确保`equals`方法的行为符合预期,避免出现类似上面例子中的问题。

    Java中equals()方法重写实现代码

    Java中equals()方法重写实现代码详解 Java中equals()方法是Object类中定义的,作为所有类的父类,任何类都隐含地继承了该方法。 equals()方法用于判断两个对象的内容是否相同,如果没有重写该方法的类,需要重写该...

    解析Java对象的equals()和hashCode()的使用

    深入解析Java对象的equals()和hashCode()的使用 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个。在多数情况下,这两个函数是不用考虑的,直接使用它们...

    Java常见笔试、面试题目深度剖析 相等性(==及equals方法)详解

    本篇文章将深入剖析“==”运算符和equals()方法的区别与联系,帮助你在Java的笔试和面试中更好地应对相关问题。 首先,“==”运算符在Java中用于比较基本类型变量的值是否相等,例如int、char或boolean。对于引用...

    set接口经常用的hashCode和equals方法详解

    ### set接口中hashCode和equals方法详解 #### 一、引言 在Java编程语言中,`Set`接口作为集合框架的重要组成部分,在实现无重复元素的数据结构方面扮演着关键角色。为了确保元素的唯一性,`Set`接口依赖于对象的`...

    java中equals和==的区别.pdf

    Java中equals和==的区别 Java是一门面向对象的编程语言,它提供了多种运算符和...但要注意的是,对于所有对象的比较,即使使用equals方法,仍然需要确保两个对象引用不为null,以避免发生NullPointerException异常。

    java中hashcode()和equals()方法详解

    ### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...

Global site tag (gtag.js) - Google Analytics