zoukankan      html  css  js  c++  java
  • ==、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不同,代表他们真的不相等

  • 相关阅读:
    2013年工作总结
    jquery的ajax向后台servlet传递json类型的多维数组
    web客户端通过ajaxfileupload方式上传文件
    servlet向ajax传递list数据类型,ajax向servlet传递array数据类型
    simplemodal — jquery弹出窗体插件
    【摘抄】活在当下
    unix网络编程 str_cli epoll 非阻塞版本
    unix网络编程str_cli使用epoll实现
    unix网络编程str_cli的epoll实现
    linux 建议锁和强制锁
  • 原文地址:https://www.cnblogs.com/yanze/p/9771747.html
Copyright © 2011-2022 走看看