当前位置: 代码迷 >> 综合 >> hashcode、equals、==的区别
  详细解决方案

hashcode、equals、==的区别

热度:34   发布时间:2023-09-18 21:18:32.0

java中的数据类型,可分为两类:

1.基本数据类型,也称原始数据类型

byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的。 

2.引用类型(类、接口、数组)   

当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。

对象是放在堆中的,栈中存放的是对象的引用(地址)。由此可见'=='是对栈中的值进行比较的。如果要比较堆中对象的内容是否相同,那么就要重写equals方法了。

3.equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)

4.hashcode和equals都是用来判断2个对象是否相等的

如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。 
如果两个对象不equals,他们的hashcode有可能相等。 
如果两个对象hashcode相等,他们不一定equals。 

如果两个对象hashcode不相等,他们一定不equals。

参考来源:http://blog.csdn.net/hla199106/article/details/46907725

  相关解决方案