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()方法是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
相关文章推荐
- Java中equals()和hashCode()的区别与联系
- Java中equals方法、==和hashCode的区别
- Java中equals方法与==和hashCode的区别
- Java 中equal() 方法与==的区别以及 equals()与 hashCode()方法重写
- 【JAVA知识】==、hashcode 与 equals()区别?
- Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系
- 【转】Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例
- java中单引号与双引号的区别?hashcode()和equals()
- Java中==和equals的区别,equals和hashCode的区别
- [Java基础] HashCode、equals、==的区别
- Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
- java hashcode()和equals()和==的介绍和区别
- Java中==与equals的区别(可以试下重写hashcode与equals方法)
- java基础 equals与==区别,String的hashcode
- java中hashcode和equals的区别
- 【java】hashCode与equals的区别与联系
- java中equals,hashcode和==的区别
- java中“==”、equals和hashCode的区别
- java(六)equals和hashcode的区别