Java中.equals方法功能简介说明
下文笔者讲述equals方法的功能简介说明,如下所示
Person类的equals方法的重写示例
.equals方法简介
.equals方法 是Java语言中Object类中的一个方法 其功能是判断两个对象是否相等
equals方法定义
public boolean equals(Object obj) {
return (this == obj);
}
其中this代表当前对象
obj则是待比较的对象
此处“==”
是比较两个对象在内存中的地址是否相同
.equals方法的重写
对于用户自定义的类
如果想要用equals方法进行对象比较
需要重写equals方法
通常情况下
我们会将equals方法重写为判断两个对象中某些属性值是否相等
例:Person类的equals方法的重写示例
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(name, person.name) &&
Objects.equals(age, person.age);
}
.equals方法的使用
在Java中
equals方法经常与==运算符混淆
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2);//输出true
System.out.println(str1 == str3);//输出false
而equals方法
则用于比较两个对象的内容是否相同
即实际值是否相等
例
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1.equals(str2));//输出true
System.out.println(str1.equals(str3));//输出true
当然,在使用equals方法比较两个对象时,需要确保其重写实现正确无误。
.equals方法的注意事项
1、在重写equals方法时,需要遵循以下几个原则:
自反性:
对于任意的引用类型x,x.equals(x)应该始终返回true。
对称性:
对于任意的引用类型x和y,如果x.equals(y)返回true,那么y.equals(x)应该同样返回true。
传递性:
对于任意的引用类型x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)应该同样返回true。
一致性:
对于任意的引用类型x和y,如果对象x和y的状态没有发生变化,那么多次调用x.equals(y)应该返回相同的结果。
非空性:
对于任意的引用类型x,x.equals(null)应该始终返回false。
2、在比较两个对象时,
需要根据具体情况选择适当的比较方式。
在一些特殊的场景下
例:
比较时间、数组、Map等,需要采用特定的比较方式或者使用相关的工具类(如Arrays.equals())。
3、在使用自定义的类时
需要注意该类是否已经重写equals方法
如果没有重写,那么默认使用的是Object类的equals方法,此时比较的是对象在内存中的地址是否相同
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


