• ==、equals与hashCode


    == 

    首先,得说明java数据类型分为基本数据类型和引用数据类型,

    基本数据类型有8种:

    浮点型:float(4 byte), double(8 byte)

    整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte)

    字符型: char(2 byte)

    布尔型: boolean

    当使用基本数据类型进行比较,比较的是实际的值,使用引用数据类型进行比较,比较的是存储于内存中的地址。

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

    equals

    首先,equals是类中定义的方法,不同类的equals方法不一样

    eg: 

    Object类

    public boolean equals (Object obj){
      return (this== obj);  
    }

    可见对于Object,equals与==一致

    而对于其他类,对equals方法进行了重写,多用来判断两者的值是否相等

    例如:

    ArrayList<String> a= new ArrayList<>();
    a.add("1");
    
    LinkedList<String> b= new LinkedList<>();
    b.add("1");
    
    if(a.equals(b)){ //相等,只要是list,均可
        System.out.println("有效");
    }
    
    
    int[] cc= {1};
    int[] dd= {1};
    if(Arrays.equals(cc, dd)){//相等
        System.out.print('e');
    }
    
    if(cc==dd){
        System.out.print('t'); //不等
    }

    常见地还有:String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等。

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

    hashCode

    这里先简单介绍一下hash表,注意以下三个词: key关键字,映射关系f(key)又叫hash函数,hash值

    散列技术就是在记录的存储位置和它的关键字之间建立一个确定的应关系,关键字key通过映射关系f(key)得出hash值,即存储位置,存储位置是一块连续的存储空间中,称为哈希表

    hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值。

    若两个对象hashCode相同,不代表他们真的相等,得用equals再确认一次

    若两个对象hashCode不同,代表他们真的不相等

  • 相关阅读:
    常用软件整理列表
    红黑树的旋转(C语言)
    Linux 内核编译
    2017年9月11日
    2017年 9月10日
    2017年9月8号 开学第一天
    开始学习.net的第二天
    前端工作需要什么
    Kubernetes容器编排技术---Kubernetes基本概念和术语(一)
    监控工具之---Prometheus探索PromQL(二)
  • 原文地址:https://www.cnblogs.com/yanze/p/9771747.html
Copyright © 2020-2023  润新知