您的位置:首页 > 编程语言 > Java开发

Java中==、equals()、hashCode()区别

2016-10-27 17:11 417 查看
==比较的是两个变量的内存中存储的值是否相同,也就是比较的是引用,对于基本数据类型比较的是它们的数值,数值相同返回true,数值不同返回false;对于引用类型比较的是,两个变量是否指向堆中的同一个对象,如果指向同一个对象的话返回true,否则返回false。

equals()方法是object类提供的一个方法,每个Java类都拥有equals()方法,object类中的equals()方法直接使用==比较两个对象,也就是比较的是两个对象的地址是否相同。如果Java类没有重写equals()方法的话,默认使用object中的equals(),这时候equals()和==效果是一样的。通常情况下可以覆盖equals()方法,比较两个对象的内容是否相同,比如String,Integer,Date这几个类就重写了equals()方法,如果new两个字符串对象,它们拥有相同的字符串值,这时候它们equals返回true,==返回false。

hashCode()是Object中的方法,Object中的hashCode()返回的是对象在内存中地址转换成的一个int值,如果没有重写hashCode()方法,任何对象的hashCode()返回值都是不相等的。在覆盖equals()的同时也要覆盖hashCode(),否则该类的对象不能作为HashMap、HashSet、HashTable等基于hash值集合类的key。

参看链接:

http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  equals hashCode