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条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站