`
kinkding
  • 浏览: 150176 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

重写equals的方法

    博客分类:
  • JAVA
 
阅读更多

 

1.使用==操作符检查实参是否为指向对象的一个引用。如果是的话,则返回true
2.使用instanceof操作符检查实参是否为正确的类型。如果不是的话,则返回false
3.把实参转换到正确的类型。因为前面已经有了instanceof测试,所以这个转换可以确保成功。
4.对于该类中每一个关键域,检查实参中的域与当前对象中对应的域值是否匹配。如果所有的测试都成功,则返回true;否则返回false
我的相关实验:
package test2;

public class Test2 {

	private String msg;

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public boolean equals(Object obj) {
		if (obj == this) {
			return true;
		}
		if (obj instanceof Test2) {
			Test2 tobj = (Test2) obj;
			return this.msg != null ? this.msg.equals(tobj.msg) : tobj.msg == null;
		}
		return false;
	}

	public int hashcode() {
		return this.msg != null ? this.msg.hashCode() : "".hashCode();
	}
	
	public static void main(String[] args) {
		Test2 t1 = new Test2();
		System.out.println(t1.equals(t1));
		t1.setMsg("good");
		Test2 t2 = t1;
		System.out.println(t1.equals(t2));
		t1.setMsg(null);
		Test2 t3 = new Test2();
		System.out.println(t1.equals(t3));
	}

}
 
输出如下:
true
true
true
分享到:
评论

相关推荐

    重写equals方法

    "equals 方法重写详解" 在 Java 中,equals 方法是一个非常重要的方法,它用于判断两个对象是否相等,而不是判断两个对象的引用是否相同。在 Object 基类中,equals 方法的实现是使用“==”操作符来比较对象的引用...

    equals方法的重写.docx

    #### 二、为什么需要重写equals方法? 1. **提高程序效率**:当两个对象具有相同的业务逻辑上的“身份”时,它们应该被认为是相等的。 2. **增强代码可读性**:重写后的`equals`方法可以根据实际需求来判断对象是否...

    为什么重写equals方法,还必须要重写hashcode方法

    为什么重写equals方法,还必须要重写hashcode方法

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

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

    为什么在重写 equals方法的同时必须重写 hashcode方法

    因此,为了保证对象在集合中的正确行为,当重写 `equals` 方法时,必须同时重写 `hashCode` 方法,确保相等的对象具有相同的哈希值。这样,集合可以正确地识别和处理相等的对象,避免数据一致性问题。同时,遵循这个...

    重写toString和equals方法

    Java 对象的toString和equals方法重写 在 Java 中,每个对象都继承自 Object 类,而 Object 类中定义了两个重要的方法:toString() 和 equals()。这两个方法都是非常重要的,它们分别用于对象的字符串表示和对象...

    重写equals和hashcode方法_equals_重写equals和hashcode方法_

    以下是对`equals()` 和 `hashCode()` 方法的详细解释及其重写的重要性。 **1. equals() 方法** `equals()` 方法用于比较两个对象是否相等。默认情况下,`equals()` 检查两个对象是否是同一个对象(即内存地址是否...

    关于重写equals,hashcode以及compareTo方法!

    关于重写equals、hashcode以及compareTo方法! equals()方法是Object类中的一个方法,它用于比较两个对象是否相等。然而,它的默认实现是比较对象的引用(地址),而不是比较对象的实际内容。因此,在某些情况下,...

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

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

    java中重写equals()方法的同时要重写hashcode()方法(详解)

    Java 中重写 equals() 方法的同时要重写 hashCode() 方法的重要性 在 Java 中,equals() 方法和 hashCode() 方法是两个紧密相关的方法,它们都是用于比较和标识对象的方法。equals() 方法用于比较两个对象的值是否...

    Java重写equals及hashcode方法流程解析

    "Java重写equals及hashcode方法流程解析" Java中的equals和hashCode方法是两个非常重要的方法,它们都是Object...同时,我们还需要注意到,重写equals方法时,必须重写hashCode方法,以便于确保对象的正确性和一致性。

    【面试】hashCode与equals两者之间的关系 / == 和equals / 为什么要重写equals方法 / 重写equals /hashcode方法 / 为什么要重写hashCode方法

    3、**为什么要重写equals()方法?** 默认情况下,`equals()`方法继承自`Object`类,比较的是对象的引用。在处理自定义类时,我们可能关心的是对象的属性是否相等,而不是它们的内存地址。因此,为了基于对象的内容...

    方法重写equals和多态

    在Java编程语言中,"方法重写equals"和"多态"是两个核心概念,尤其对于面向对象的设计和实现至关重要。下面将详细解释这两个概念及其相互关系。 **方法重写equals()** 在Java中,`equals()`方法是Object类的一个...

    1_equals_overridingequals_

    标题"1_equals_overridingequals_"暗示了我们讨论的主题正是如何在子类中正确地重写equals方法。 首先,让我们理解为什么需要重写equals。默认情况下,Object类的equals方法基于对象的内存地址进行比较,也就是说,...

    winform 重写Equals源码

    在某些情况下,尤其是自定义控件或者业务实体类的设计中,我们可能需要重写`Equals`方法来实现特定的比较逻辑。下面我们将深入探讨WinForm中重写`Equals`方法的相关知识点。 首先,`Equals`方法是`Object`类中的一...

    重写Java中的equals方法介绍

    在实际开发中,我们通常需要重写equals方法,以便比较两个对象的内容是否相同。例如,在雇员对象中,我们可以根据雇员的姓名、薪水和雇佣日期来判断两个雇员对象是否相等。 重写equals方法的步骤: 1. 首先,判断...

    Java_重写equals()和hashCode()

    但在实际开发中,我们往往需要根据对象的内容来判断它们是否相等,这时就需要重写 `equals()` 方法。重写时应遵循以下原则: 1. **自反性**:对于任何非null的引用值x,x.equals(x)应该返回true。 2. **对称性**:...

    Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)

    因此,在大多数情况下,我们需要重写equals方法,以便比较两个对象的内容是否相等。 重写equals方法需要遵守以下几个通用约定: 1. 自省性:对于非null的x,存在x.equals(x)返回true。 2. 对称性:对于非null的x和...

    C# Equals 和 GetHashCode 方法重写

    ### C# Equals 和 GetHashCode 方法重写 在C#编程中,`Equals` 和 `GetHashCode` 方法是非常重要的成员方法,它们对于确保对象的正确比较以及高效地存储和检索对象至关重要。这两个方法通常需要在自定义类中进行...

    关于Object中equals方法和hashCode方法判断的分析

    "关于Object中equals方法和hashCode方法判断的分析" 在 Java 中,Object 类提供了两个重要的方法:equals 方法和 hashCode 方法。这两个方法都是用于比较两个对象是否相等的,但它们的实现机理和作用域却有所不同。...

Global site tag (gtag.js) - Google Analytics