• ==、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不同,代表他们真的不相等

  • 相关阅读:
    20191112 Spring Boot官方文档学习(4.5-4.6)
    20191112 Spring Boot官方文档学习(4.4)
    (转)service apache2 restart失败
    (mark)ubuntu16.04下安装&配置anaconda+tensorflow新手教程
    解决ssh连接中断程序终止的问题——tmux
    Tensorflow取消占用全部GPU
    Linux大文件split分割以及cat合并
    常用压缩/解压操作
    HM16.0帧内预测重要函数笔记
    GIT LFS 使用笔记
  • 原文地址:https://www.cnblogs.com/yanze/p/9771747.html
Copyright © 2020-2023  润新知