欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java 基础复习实践 --- Hashcode Equals

发布时间:2025/3/21 java 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java 基础复习实践 --- Hashcode Equals 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

虽然很多知识点书籍都有整理,但是记性总是不好,所以决定将一些细小容易混淆的概念,通过简单的 Demo 实践,加深复习。特此开一个坑,坚持就是胜利。

本章内容主要为了理解以下几个知识点:

  • equals() 的作用是什么?
  • equals() 与 “==”的区别是什么?
  • hashcode() 的作用是什么?
  • hashcode() 与 equals()之间有什么联系?

目录

  • 目录
  • equals() 的作用
    • 没有覆盖 equals() 方法
    • 覆盖 equals() 方法

equals() 的作用

Indicates whether some other object is “equal to” this one.

equals()是用来 判断两个对象是否相等

equals() 定义在 JDK 的 Object.java 中。通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等。源码如下:

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

既然是在 Object 类中定义了该方法,就表明了 Java 所有类都实现了 equals() 方法,所以所有类都可以通过该方法去判断两个对象是否相等。
默认的 equals() 方法等同于 ”==” 方法,所以我们一般会重写 equals() 方法 —-> 两个对象的内容相等,返回 true ,否则返回 false。

所以我们可以根据是否 重写 equals() 方法将类分为两类:

1.若某个类没有覆盖 equals() 方法,当它的通过 equals() 比较两个对象时,实际上是比较两个对象是不是同一个对象。这时,等价于通过“==”去比较这两个对象

2.覆盖类的 equals() 方法,来让 equals() 通过其它方式比较两个对象是否相等。通常的做法是:若两个对象的内容相等,则 equals()方法返回true;否则,返回 false 。

没有覆盖 equals() 方法

public class HashcodeAndEquals { private static <T> void out(T t) {System.out.println(t);} public static void main(String[] args) { // 实例化两个 Person 对象Person p1 = new Person("小明", 12);Person p2 = new Person("小明", 12); // 通过 equals() 比较他们是否相等out(p1.equals(p2));} private static class Person { int age;String name; public Person(String name, int age) { this.age = age; this.name = name;} @Override public String toString() { return name + "--- age:" + age;}}}

输出为
false

覆盖 equals() 方法


from: http://imxie.cc/2016/07/18/Review-the-Java-basic-equals-hashcode/?utm_source=tuicool&utm_medium=referral

总结

以上是生活随笔为你收集整理的Java 基础复习实践 --- Hashcode Equals的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。