【Java基础】之 哈希值

简介: 【Java基础】之 哈希值

哈希值✨✨✨


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()方法




目录
相关文章
|
5月前
|
存储 Java
【JAVA】处理哈希冲突的常见方法
【JAVA】处理哈希冲突的常见方法
|
5月前
|
存储 缓存 Java
最新Java基础系列课程--Day10-IO流文件处理
最新Java基础系列课程--Day10-IO流文件处理
|
5月前
|
存储 Java
最新Java基础系列课程--Day10-IO流文件处理(一)
最新Java基础系列课程--Day10-IO流文件处理
|
4月前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
144 2
|
21天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
2月前
|
Java
【Java集合类面试十四】、HashMap是如何解决哈希冲突的?
HashMap解决哈希冲突的方法是通过链表和红黑树:当链表长度超过一定阈值时,转换为红黑树以提高性能;当链表长度缩小到另一个阈值时,再转换回链表。
|
4月前
|
安全 Java
|
4月前
|
存储 算法 Java
Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。
【6月更文挑战第21天】Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。简单哈希表实现未涵盖冲突解决和删除操作。
43 1
|
4月前
|
搜索推荐 算法 Java
【Java基础】 几种简单的算法排序
几种简单的JAVA算法排序
45 4
|
4月前
|
NoSQL Java Redis
【Redis】 Java操作客户端命令——列表操作与哈希操作
【Redis】 Java操作客户端命令——列表操作与哈希操作
下一篇
无影云桌面