• hashCode 及hashcode与equals的区别


    1.hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 详细了解请 参考 [1]  public int hashCode()返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能

    2.equals  了解需要看这个http://www.cnblogs.com/dolphin0520/p/3592500.html

       String str = new String("hello");

       String str1 = new String("hello");

      sys.out.println(str == str1) ;

      sys.out.println(str.equals(str1));

      第一个为false;第二个为true;     str和str1指向两个不同的对象。是两个不同的象的引用。地址是不同的。str = str1;str1指向了第一个对象的地址。两者就变成相等的了。

      第二个是因为string 对equals进行了重写。

    还可以看看这个http://www.cnblogs.com/lulipro/p/5628750.html

    3.public boolean equals(Object obj)

    Object类中默认的实现方式是  :   return this == obj  。那就是说,只有this 和 obj引用同一个对象,才会返回true。

    4. 两者比较相关博客推荐http://www.cnblogs.com/lulipro/p/5628750.html

    5.为什么需要重写hashCode?

    这样如果我们对一个对象重写了euqals,意思是只要对象的成员变量值都相等那么euqals就等于true,但不重写hashcode,那么我们再new一个新的对象,
    当原对象.equals(新对象)等于true时,两者的hashcode却是不一样的,由此将产生了理解的不一致,如在存储散列集合时(如Set类),将会存储了两个值一样的对象,
    导致混淆,因此,就也需要重写hashcode()

    
    
  • 相关阅读:
    linux常用命令整理
    pg_sql常用查询语句整理
    python 爬取媒体文件(使用chrome代理,启动客户端,有防火墙)
    python 爬取媒体文件(无防火墙)
    python读写符号的含义
    python数据分析开发中的常用整理
    wget: 无法解析主机地址
    ## nginx 使用
    iptables防火墙
    【redis】Could not connect to Redis at 127.0.0.1:6379: Connection refused
  • 原文地址:https://www.cnblogs.com/qianxinxu/p/6507126.html
Copyright © 2020-2023  润新知