zoukankan      html  css  js  c++  java
  • 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()

    
    
  • 相关阅读:
    STL map
    HDU1372 Knight Moves BFS
    HDU1072 Nightmare BFS
    discuz论坛发帖添加字段
    gridview自定义button事件 ,无法触发 onrowcommand
    discuz 怎么开启评分!!!
    discuz学习网站收集
    discuz扩展工具集合
    童话世界整理“说说”
    asp.net中Literal与label的区别
  • 原文地址:https://www.cnblogs.com/qianxinxu/p/6507126.html
Copyright © 2011-2022 走看看