Pfeffer 2017-08-15 07:21 采纳率: 50%
浏览 1032
已采纳

Hashcode 和 equals 问的我都累了

图片说明

请认真看我的问题:
我仔细看了一下这四句话,得出来的结论:
1. object.equals 比较的是引用内容,应用内容相等,肯定是同一个对象或者说对象相等。
2. Hashcode算法的对象是和对象的信息本身和地址有关,不是单一的和地址有关。
因为如何只和地址有关,肯定是和equals同步的

  • 写回答

2条回答 默认 最新

  • 鼠晓 博客专家认证 2017-08-15 07:39
    关注

    【1】 object.equals 比较的是引用内容,应用内容相等,肯定是同一个对象或者说对象相等。
    不一定,,比如

            String a = new String("ABC");
            String b = new String("ABC");
            System.out.println(a.equals(b));//true
            System.out.println(b.equals(a));//true
            System.out.println(a==b);//false
    

    【2】Hashcode算法的对象是和对象的信息本身和地址有关,不是单一的和地址有关。
    hashcode和物理地址没关系,只是一种约定,并非强制性的。主要是为相关哈希集合及运算服务的。

      public native int hashCode();//源码中是一个本地方法
    

    有个例子,,连个对象不一定相等,但是hashCode相等。(数字可能不一样但是,相等)

            String a = new String("ABC");
            String b = new String("ABC");
            System.out.println(a.hashCode());//64578
            System.out.println(b.hashCode());//64578
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料