哈希值✨✨✨
1.1 概述:🎏
哈希值: 是JDK 根据对象的地址或者字符串或者数字算出来的int 类型的数值
注:
哈希值不是对象的地址值,
哈希值是个int 类型的数值
1.2 哈希值的获取🎊
Object 类中有一个方法可以获取对象的哈希值
public int hashCode();返回对象的哈希码值
1.3 代码示例:🎐🎐🎐
学生类:
package com.ithmm_05; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int hashCode(){ return 0; } }
测试类:
package com.ithmm_05; /** * 哈希值: 是JDK 根据对象的地址或者字符串或者数字算出来的int 类型的数值 * public int hashCode();返回对象的哈希码值 */ public class HashDemo { public static void main(String[] args) { Student s1 = new Student("张三",35); //同一个对象多次调用hashCode()方法返回的哈希值是相同的 System.out.println(s1.hashCode());//356573597 System.out.println(s1.hashCode());//356573597 System.out.println("------------------------"); Student s2 = new Student("张三",35); //默认情况下,不同对象的哈希值是不相同的 //通过方法重写,可以实现不同对象的哈希值是相同的 System.out.println(s2.hashCode());//1735600054 System.out.println(s2.hashCode());//1735600054 System.out.println("hello".hashCode());//99162322 System.out.println("world".hashCode());//113318802 System.out.println("java".hashCode());//3254818 System.out.println("-------------------------"); //字符串重写了hashCode()方法 System.out.println("重地".hashCode());//1179395 System.out.println("通话".hashCode());//1179395 } }
注:默认情况下,不同对象的哈希值是不相同的
通过方法重写,可以实现不同对象的哈希值是相同的
1.4 对象的哈希值的特点🎋🎋🎋
同一个对象多次调用hashCode()方法返回的哈希值是相同的
默认情况下,不同对象的哈希值是不相同的,而重写hashCode()方法,可以实现让不同对象的哈希值相同
字符串重写了hashCode()方法