• 最详细的equal和hashcode详解


    java.lang.Object类中有两个非常重要的方法:

    1.public boolean equals(Object obj)

    2.public int hashCode()

    Object类是类继承结构的基础,是每一个类的父类。所有的对象,包括数组,都实现了在Object类中定义的方法。

    equals()方法详解

    equals()方法是用来判断其他的对象是否和该对象相等.

      equals()方法在object类中定义如下:

    public boolean equals(Object obj) {

     return (this == obj);

    }

    很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、Integer、Double等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法。

      比如在String类中如下:

    public boolean equals(Object anObject) {
    if (this == anObject) {
    return true;
    }
    if (anObject instanceof String) {
    String anotherString = (String)anObject;
    int n = count;
    if (n == anotherString.count) {
    char v1[] = value;
    char v2[] = anotherString.value;
    int i = offset;
    int j = anotherString.offset;
    while (n– != 0) {
    if (v1[i++] != v2[j++])
    return false;
    }
    return true;
    }
    }
    return false;
    }复制代码

    对于Object类来说,equals()方法在对象上实现的是差别可能性最大的等价关系,即,对于任意非null的引用值xy,当且仅当xy引用的是同一个对象,该方法才会返回true

    需要注意的是当equals()方法被override时,hashCode()也要被override。按照一般hashCode()方法的实现来说,相等的对象,它们的hash code一定相等。

    Hashcode是字符串通过某种算法得到的一个整数,这个整数在一定的字符串之间会有可能计算出来是重复的,因为它是通过一种规则去计算的

     

    转载:https://blog.csdn.net/zj15527620802/article/details/88547914

  • 相关阅读:
    实用工具---制作试卷
    RDP Client 参数含义调查
    xenserver 虚拟机定时开关机实现
    xenserver 脚本学习之/opt/xensource/bin/xapi-autostart-vms
    最佳的前端监听事件触发方式
    前端之Angularjs
    网页分享
    面试题之事务
    Spring Security安全访问控制解决方案的安全框架
    docker部署
  • 原文地址:https://www.cnblogs.com/Koma-vv/p/13452923.html
Copyright © 2020-2023  润新知