From b7470d5c0773b0a886fc89130c4bcc28d056a6e1 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Sun, 2 Aug 2026 10:49:28 +0800 Subject: [PATCH] =?UTF-8?q?s-day02-=E5=AF=B9=E8=B1=A1=E7=9A=84=E5=93=88?= =?UTF-8?q?=E5=B8=8C=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/inmind/set02/HashCodeDemo08.java | 25 ++++++++++++++++ .../src/com/inmind/set02/HashSetDemo07.java | 1 + s-day03/src/com/inmind/set02/Student.java | 29 +++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 s-day03/src/com/inmind/set02/HashCodeDemo08.java create mode 100644 s-day03/src/com/inmind/set02/Student.java diff --git a/s-day03/src/com/inmind/set02/HashCodeDemo08.java b/s-day03/src/com/inmind/set02/HashCodeDemo08.java new file mode 100644 index 0000000..31075ee --- /dev/null +++ b/s-day03/src/com/inmind/set02/HashCodeDemo08.java @@ -0,0 +1,25 @@ +package com.inmind.set02; +/* +1.什么是哈希值?? + 哈希值就是一个对象的特征码,使用一个十进制int值来表示的.int的值是有限的,但是对象是无限的(不同的对象的哈希值可能相同) +2.如何获取一个对象的哈希值呢?? + Object类中有一个方法hashCode方法可以获取 + + Object类的hashCode的源码: + public native int hashCode();//通过真正的地址值使用哈希算法返回的一个int值 +3.我们发现每个对象的哈希值默认是通过地址来获取,这样没有意义.我们在实际开发中 + 希望拥有相同内容的同一类对象的哈希值的一致.所以子类重写hashcode.我们可以模拟一个 + 已经重写过hashcode,并且经常使用的类.得出一个结论,String的哈希值跟它的内容有关,那么 + 自定义类重写hashcode那么也应该跟类的内容(属性)有关 + */ +public class HashCodeDemo08 { + public static void main(String[] args) { + Student s = new Student("张三", 18); + Student s1 = new Student("张三", 18); + int i = s.hashCode(); + System.out.println(i); + System.out.println(s); + //按照我们实际开发的需求,认作是同一个对象的哈希值就应该一样!!!! + System.out.println(s1.hashCode()); + } +} diff --git a/s-day03/src/com/inmind/set02/HashSetDemo07.java b/s-day03/src/com/inmind/set02/HashSetDemo07.java index 24a2a46..ba77f32 100644 --- a/s-day03/src/com/inmind/set02/HashSetDemo07.java +++ b/s-day03/src/com/inmind/set02/HashSetDemo07.java @@ -33,5 +33,6 @@ public class HashSetDemo07 { System.out.println(e); } + } } diff --git a/s-day03/src/com/inmind/set02/Student.java b/s-day03/src/com/inmind/set02/Student.java new file mode 100644 index 0000000..75fd506 --- /dev/null +++ b/s-day03/src/com/inmind/set02/Student.java @@ -0,0 +1,29 @@ +package com.inmind.set02; + +import java.util.Objects; + +public class Student extends Object { + String name; + int age; + + public Student(String name, int age) { + this.name = name; + this.age = age; + } + + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + + Student student = (Student) o; + return age == student.age && Objects.equals(name, student.name); + } + + @Override + public int hashCode() { + int result = Objects.hashCode(name); + result = 31 * result + age; + return result; + } +}