Object类-equals()、==、hashCode()
来源:互联网 发布:蚂蚁公舍 上海 知乎 编辑:程序博客网 时间:2024/06/07 01:46
一、Object类简介
java.lang包中定义的Object类是所有Java类的根父类,其中定义了一些实现和支持面向对象机制的重要方法。任何Java对象,如果没有父类,就默认它继承了Object类。因此,实际上,以前的定义是下面的简略:
public class A extends Object{}
二、equals方法
Object类定义的equals方法用于判别某个指定的对象与当前对象(调用equals方法的对象)是否等价。数据等价的基本含义是指两个数据的值相等。
三、equals方法与“==”运算符的关系
1、equals()方法只能比较引用类型,“==“可以比较引用类型及基本类型;
2、默认的equals()方法比较的是内存地址,基本等同于”==“,但对于类File、String、Date及包装类来说,是比较的值而不是内存地址,这是因为它们内部覆盖实现了equals()方法;
3、”==“进行比较的时候,引用类型数据比较的是引用即内存地址,基本数据类型比较的是值。它是会自动的去进行转换的。
四、覆盖equals()方法
覆盖之前equals和==比较的都是内存地址,覆盖equal的一般步骤如下:
(1)、用==检查是否参数就是这个对象的引用;
(2)、判断要比较的对象是否为null,如果是null,返回false;
(3)、用instanceof判断参数的类型是否正确;
(4)、把参数转换成合适的类型;
(5)、比较对象属性值是不是匹配。
private String uuid;@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;T3 other = (T3) obj;if (uuid == null) {if (other.uuid != null)return false;} else if (!uuid.equals(other.uuid))return false;return true;}
重要规则:覆盖equals()应该连带覆盖hashcode()
五、什么是hashCode?
实际上,由Object类定义的hashCode方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是Java编程语言不需要这种实现技巧)你可以这样理解hashCode,它获取对象在内存中的地址并加以某种算法而计算得来,它是对象的散列码值。主要用来在集合中实现快速查找等操作,也可以用于对象的比较。
在Java中对hashCode的规定如下:
1、在同一个应用程序执行期间,对同一个对象调用hashCode(),必须返回相同的整数结果。至于同一个应用程序在不同执行期所得的结果无需一致;
2、如果两个对象被equals(Object)方法视为相等,那么对这两个对象调用hashCode()必需返回相同的整数结果;
3、如果两个对象被equals(Object)方法视为不相等,那么对这两个对象调用hashCode()必须获得相同的整数结果。
- Object类-equals()、==、hashCode()
- ==、hashCode()、equals(Object obj)方法
- Object 类 equals toString hashCode
- Object类的解释(equals,hashcode)
- Object 类之 hashCode 和 equals 方法
- Object类分析equals、hashcode、clone
- 接口、Object类(toString(), equals(), hashCode())
- Object类:hashCode() 与 equals() 的关系
- 关于Object类的equals()和hashcode()
- object类中的equals和hashcode方法
- Object类equals和hashCode方法
- Java Object equals() & hashCode()
- Java object equals hashcode
- hashCode、equals、==
- equals == hashcode
- equals == hashcode
- equals,==,hashcode
- equals 和 ==, equals 和 hashcode
- win7 喇叭图标不见了
- Tomcat总是自动跳debug模式解决方法
- JavaScript忍者的秘密--第一部分--准备训练
- 【LeetCode】Maximum Subarray
- P2P实现的原理
- Object类-equals()、==、hashCode()
- 如何禁止STL map 自动排序
- JAVA中String与StringBuffer的区别
- OSI开放协议会话层的初步理解
- struts2.3.16环境搭建要用到的jar包
- MachineLearning(Hsuan-Tien Lin)第三讲
- Optimal Parking
- pat 1072
- Oracle EBS R12.0.6 - XXX is not a valid responsibility for the current user. Please contact your Sys