Java equals 方法以及和 ==的区别

来源:互联网 发布:linux怎么使用eclipse 编辑:程序博客网 时间:2024/06/06 03:41
equals 方法指示 其他某个对象 是否与此对象 "相等"。


equals 方法在 非空对象 引用上实现 等价关系

1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
4、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

对于任何非空引用值 x,x.equals(null) 都应返回 false。


Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。


Object类 equals(Object obj) 方法源码

public boolean equals(Object obj) {    return (this == obj);}

对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,以及String类重写了 equals方法
==是比较地址的,而equals是比较内容的。


对于基本数据类型,不能使用equals方法,只能使用  "==" 等于号 进行值比较。

0 0