zoukankan      html  css  js  c++  java
  • equals方法,hashcode()方法

    Object类的equals 方法 用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。
     
    (一)说到equals方法,不得不提一下==号。
    ==用于比较引用和比较原生数据类型时具有不同的功能:
    a)比较原生数据类型,如果两个值相同,则结果为true
    b)而在比较引用时,如果引用指向内存中的同一对象,结果为true
     
    (二)下面是equals方法跟==号使用的比较:
     
    Eg:s1 = new String("sony"); //创建的是字符串对象,用new方法生成的字符串对象,引用指向的是堆中的对象
    s1.equals("sony");               //返回true,比较的是内容
    s1 == "sony"                      //返回false,比较的是 是否指向同一对象对象,此处的sony是字符串池中的对象
     
    //如果
    s1 = "sony";                       //用等号赋值,s1指向字符串池中的对象
    s1 == "sony"                      //返回true
     
    //如果
    s1 = "sony";
    s2 = "sony";                      //都指向字符串池的对象
    s1.equals(s2); 或者string.equals(s1,s2);//返回true
     

    (三)关于Object类的equals方法有以下特点

    a)自反性:x.equals(x)应该返回true

    b)对称性:x.equals(y)为true,那么y.equals(x)也为true

    c)传递性:x.equals(y)为true 并且 y.equals为 true,那么x.equals(z)也应该为true

    d) 一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次第三次第N次调用也是true,前提示没有修改x和y

    e)对于非空引用x,x.equals(null)返回false

    ---------------------------------

    ---------------------------------

    hashcode方法

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

    (二)一致性:在程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行hashcode比较时所用的信息没有被修改

    (三)与equals方法的关系

    如果根据Object类中的equals(Object) 方法,两个对象是相等的,那么对这两个调用 hashCode 方法都必须生成相同的整数结果。
    但是,如果两个hashCode()返回的结果相等,则两个对象的equals方法不一定相等。
    如果根据equals(java.lang.Object)方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法计算生成的结果可能相等
     

    (四)通常在我们写一个类的时候,往往要重写hashCode方法和equals方法,因为通常比较这个类的对象是不是相同往往要根据实际情况考虑,例如:person()类,我们现在认为name属性相同就是同一个people,那么我们可以在person()类内重写hashCode方法和equals方法,使得person1.equals(person2)在它们的name属性相同时就返回true。

     

  • 相关阅读:
    架构设计中的方法学——迭代设计
    架构重构改善既有代码的设计
    架构如何为业务和技术“服务”(2)
    架构如何为业务和技术“服务”(1)
    选用面向领域的多层分布式架构(DDD风格架构)的理由
    传话游戏(2013编程之美全国挑战赛资格赛)
    2012年蓝桥杯软件设计大赛河南省初赛试题和答案
    最大值最下化
    NYOJ120 校园网络(强连通缩点targan算法)
    NYOJ176整数划分(二)
  • 原文地址:https://www.cnblogs.com/vmax-tam/p/4074023.html
Copyright © 2011-2022 走看看