【JAVA知识】==、hashcode 与 equals()区别?
来源:互联网 发布:在哪里下c语言编程软件 编辑:程序博客网 时间:2024/06/05 08:29
1)==:是用来比较两个变量(基本类型和对象类型)的值是否相等。
如果是基本类型,那么直接比较值;如果是对象类型,那么比较的是这两个对象在栈中的引用。对象是放在堆中,引用是放在栈中。如果要比较堆中对象的内容是否相等,需要重写equals方法。
2)hashcode:返回对象在内存中地址转换成的一个int值,如果没有重写hashcode的话,那么任何对象的hashcode是不相等的,通常在集合类中需要hashcode和equals方法。
3)equals:该方法中就是用“==”来比较的,所以如果没有重写equals的话,equals是与==等价的。
4)hashcode的详解:
a、集合(Collection)有两种,一种List,有序的可重复,另一种是Set,无序不可重复。
b、Set中的元素无序不重复那么比较方式是什么呢?用Object.equals()去比较,但是不是插入的新元素跟所有老的元素进行遍历比较,而是采用哈希算法,
c、哈希算法是散列算法,是将数据依特定的算法直接指定到一个地址上。简单理解是hashcode返回的就是一个地址值。
d、当要插入新数据的,先调用这个元素的hashcode方法,定位到物理位置,如果该位置没有元素,那么它就储存在这个位置上。如果该位置上有元素,那么调用equals进行比较,相同则不存,不相同就储存起来。解决冲突而使用的equals的次数大大减少。
e、Java对于equals方法和hashcode方法是这样规定的:
i、如果两个对象相同,那么他们的hashcode值一定相同。
ii、如果两个对象hashcode相同,那么他们不一定相同,对象可以用equals比较。
- 【JAVA知识】==、hashcode 与 equals()区别?
- hashcode,==,equals的区别与联系(JAVA)
- == 与 equals() hashCode() 等知识
- java基础 equals与==区别,String的hashcode
- java中equals(),==与hashcode()的区别?
- ==与equals,hashcode的区别
- .equals()与Hashcode,==的区别
- Java--hashcode,equals,==的区别
- Java ==、equals、hashcode的区别
- Java中==、equals()、hashCode()区别
- equals与==,equals与hashcode的区别
- Java中==与equals的区别(可以试下重写hashcode与equals方法)
- Java中==与equals()以及hashCode()的区别
- java ==和equals、equals和hashCode的区别
- java 中的 equals、==与hashcode
- ==、equals、hashCode区别?
- hashcode()与equals区别
- Java 中equal() 方法与==的区别以及 equals()与 hashCode()方法重写
- JAVASE之String类
- 周易六十四卦——小畜卦
- 前端开发框架对比
- Android View(一)-View坐标以及方法说明
- 如何用maven来构建web程序
- 【JAVA知识】==、hashcode 与 equals()区别?
- javascript学习笔记——命令模式
- 【Modern OpenGL】颜色 Colors
- select、poll、epoll使用小结
- Spring中的设计模式
- 【完善】MyEclipse8.5+Axis2 1.6.2插件安装
- 方法的重载
- 0000
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例