java中hashcode()方法和equals方法的区别
2017-02-18 11:25
357 查看
一、概要
这2个方法都是用来判断2个对象是否相等的。但是他们是有区别的。 一般来讲,equals这个方法是给用户调用的,如果想判断2个对象是否相等,可以重写equals方法,然后在代码中调用,就可以判断他们是否相等了。简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等。举个例子,有个学生类,属性只有姓名和性别,那么我们可以认为只要姓名和性别相等,那么就说这2个对象是相等的。
hashcode方法一般用户不会去调用,而是用在HashMap,Set,HashTable中。比如在hashmap中,由于key是不可以重复的,在判断key是不是重复的时候就判断了hashcode这个方法,而且也用到了equals方法。判断不能重复时,只要equals和hashcode有一个不等就可以了。
二、注意
1、一般在覆盖equals的同时也要覆盖hashcode
2、equals()方法返回true时,两个对象的HashCode()值一定要相等
HashCode() should have the same value whenever equals() returns true.
这2个方法都是用来判断2个对象是否相等的。但是他们是有区别的。 一般来讲,equals这个方法是给用户调用的,如果想判断2个对象是否相等,可以重写equals方法,然后在代码中调用,就可以判断他们是否相等了。简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等。举个例子,有个学生类,属性只有姓名和性别,那么我们可以认为只要姓名和性别相等,那么就说这2个对象是相等的。
hashcode方法一般用户不会去调用,而是用在HashMap,Set,HashTable中。比如在hashmap中,由于key是不可以重复的,在判断key是不是重复的时候就判断了hashcode这个方法,而且也用到了equals方法。判断不能重复时,只要equals和hashcode有一个不等就可以了。
二、注意
1、一般在覆盖equals的同时也要覆盖hashcode
2、equals()方法返回true时,两个对象的HashCode()值一定要相等
HashCode() should have the same value whenever equals() returns true.
相关文章推荐
- Java中equals和==的区别?为什么重写equals方法后,一定要重写hashCode方法?
- Java中的 = 4000 =,equals方法,hashCode方法的区别
- Java中equals方法、==和hashCode的区别
- Java 中equal() 方法与==的区别以及 equals()与 hashCode()方法重写
- Java中==与equals的区别(可以试下重写hashcode与equals方法)
- java的equals和hashcode方法的区别和联系
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例
- 【转】Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例
- Java中equals方法与==和hashCode的区别
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
- java中equals方法和“==”的区别
- java 重写类的equals方法和hashcode方法
- JAVA中重写equals()方法为什么要重写hashcode()方法说明
- 深入java 的equals方法和hashCode方法
- java中的 hashcode() 、equals() 和==的区别
- Java中Object类的equals()和hashCode()方法深入解析
- Java软件低级错误: 定义equals方法的同时也要定义hashCode方法
- Java中equals()与hashCode()方法完全解惑
- java基础问题----"=="和equals方法究竟有什么区别
- java equals与hashCode 两个重要方法的重写