equals,“==”,hashCode的区别
来源:互联网 发布:生态学现状知乎 编辑:程序博客网 时间:2024/06/05 06:37
1、“==”是运算符:比较变量对应的内存中所存储的数值是否相同。要比较两个基本数据类型数据或两个引用变量是否相等,只能使用“==”运算符。
“==”比较两个引用类型变量,比较的是两个对象是否指向同一个对象,如果要看这两个变量所对应内存中的数值(内容)是否相等,则无法用“==”实现。
2、equals是Object类提供的方法之一,每个对象都具有equals这个方法,在没有覆盖equals(Object)方法的情况下,equals(Object)与“==”运算符一样,比较的是引用。
equals和“==”不同:equals(Object)可以被覆盖,可通过覆盖的方法让它不是比较引用,而是数据的内容。
3、hashCode()方法是从Object类中继承过来的,也是用来鉴定两个对象是否相等。Object类中的hashCode()方法返回对象在内存中地址转换成一个int值,所以如果没有重写hashCode()方法,任何对象的hashCode()都是不相等的。
equals和hashCode()的不同:
(1)equals()是给用户调用的,如果判断两个对象是否相等,可以重写equals()方法,然后在代码中调用。对于hashCode()方法一般不会去调用它,hashCode()相当于一个对象的编码。
(2)返回类型不同:hashCode()返回类型int型,equals()返回类型boolean型。
(3)一般在覆盖equals()方法的同时也要覆盖hashCode()方法。
(4)用这两种方法比较两个变量,equals()比较不相等,则hashCode()返回值可能相等,也有可能不等;
反之,hashCode()返回值不等,一定能推出equals()比较也不相等;hashCode()返回值相等,equals()比较可能相等,也有可能不相等。
- hashcode,equals,==的区别
- ==与equals,hashcode的区别
- Java--hashcode,equals,==的区别
- hashcode,equals,==的区别
- hashcode,equals,==的区别
- "=="、equals和hashCode的区别
- Java ==、equals、hashcode的区别
- equals、==、hashCode的区别
- .equals()与Hashcode,==的区别
- “==”、equals 和 hashCode 的区别
- equals,“==”,hashCode的区别
- hashcode equals和==的区别
- equals与==,equals与hashcode的区别
- java ==和equals、equals和hashCode的区别
- ==、equals、hashCode区别?
- java中的 hashcode() 、equals() 和==的区别
- java基础 equals与==区别,String的hashcode
- hashCode与equals的区别与联系 还有“==”
- 模仿今日头条:频道管理
- 转载:MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较
- 面向对象编程——封装、多态、继承
- HDU1070 Milk
- Vue.js——60分钟快速入门
- equals,“==”,hashCode的区别
- hdu 2157 How many ways??
- Android.mk文件分析
- Python之文件读写报错解析
- hdu 1061 Rightmost Digit
- POJ2104-K-th Number
- pymysql处理Unicode
- Linux文件权限小技巧
- B-POJ-3278 Catch That Cow