首页 > 编程语言 >java——集合——Set集合——哈希值

java——集合——Set集合——哈希值

时间:2022-11-19 16:56:16浏览次数:42  
标签:Set java String Person System hashCode println 集合 out

哈希值

哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到地址,不是数据实际存储的物理地址)
在Object类有一个方法,可以获取对象的哈希值

  • int hashCode() 返回该对象的哈希码值。
  • hashCode方法的源码:
public native int hashCode();

native:代表该方法调用的是本地操作系统的方法


public class Demo01HashCode {
    public static void main(String[] args) {
        //Person类继承了Object类,所以可以使用Object类的hashCode方法
        Person p1 = new Person();
        int h1 = p1.hashCode();
        System.out.println(h1);//1967205423  | 1

        Person p2 = new Person();
        int h2 = p2.hashCode();
        System.out.println(h2);//42121758   |  1

        /*
            toString方法的源码:
                return getClass().getName() + "@" + Integer.toHexString(hashCode());
         */
        System.out.println(p1);//com.itheima.demo03.hashCode.Person@75412c2f
        System.out.println(p2);//com.itheima.demo03.hashCode.Person@282ba1e
        System.out.println(p1==p2);//false

        /*
            String类的哈希值
                String类重写Obejct类的hashCode方法
         */
        String s1 = new String("abc");
        String s2 = new String("abc");
        System.out.println(s1.hashCode());//96354
        System.out.println(s2.hashCode());//96354

        System.out.println("重地".hashCode());//1179395
        System.out.println("通话".hashCode());//1179395
    }
}


package com.itheima.demo03.hashCode;

public class Person extends  Object{
    //重写hashCode方法

    @Override
    public int hashCode() {
        return  1;
    }
}
 

标签:Set,java,String,Person,System,hashCode,println,集合,out
From: https://www.cnblogs.com/xiaobaibailongma/p/16906434.html

相关文章

  • java——集合——List集合——ArrayList集合
                                                  ArrayList集合Arr......
  • java——集合——List集合——LinkedList集合
    LinkedList集合java.util.LinkedList集合implementsList接口##**LinkedList集合的特点:**1.底层是一个链表结构:查询慢,增删快2.里边包含了大量操作首尾元素的方法注......
  • Java——集合——数据结构——栈、队列、数组、链表、红黑树
                                                      ......
  • JAVA仓库管理系统(附源码+调试)
    JAVA仓库管理系统——三只松鼠仓库管理系统功能描述(1)登录模块:登录信息等存储在数据库中(2)基本档案管理模块:供货商管理,销售商管理,货品档案管理,仓库管理(3)采购订货模块:用户可以......
  • Git - revert 和 reset 命令
    Gitrevert命令该命令会重新进行一次新的提交,以达到撤销某次提交的目的。如果您已经将commit链推送到远端仓库,则revert是一种非常友好的方式。使用场景撤回commit......
  • 【JAVA】线程
    线程概念线程:程序进程:运行中的程序线程由进程创建,是进程的实体。一个进程可以有多个线程。单线程,多线程并发:同一时刻多个任务交替进行。单核cpu并行:同一时刻多个任......
  • 【Java】 Springboot+Vue 大文件断点续传
     同事在重构老系统的项目时用到了这种大文件上传 第一篇文章是简书的这个:https://www.jianshu.com/p/b59d7dee15a6 是夏大佬写的vue-uploader组件:https://www......
  • Java的特性和优势
    简单的(摒弃指针、结构、枚举,提供类库)面向对象可移植性多线程(在语言级支持多线程的程序设计,就像做一张桌子)动态性安全性健壮性(内存回收机制,避免内存泄露)分布式与......
  • Java——集合——泛型——泛型通配符
                                  泛型通配符当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通......
  • javascript-代码随想录训练营day4
    24.两两交换链表中的节点题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须......