equals方法
判断两个对象是否相等;
基本数据类型:比较的是数值;
引用数据类型:比较的地址值
package day22;
import java.util.Objects;
public class person {
String name;
int age;
public person(String name, int age) {
this.name = name;
this.age = age;
}
/*对equals方法进行重写,使得可以比较两个对象是数值;
*/
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
person person = (person) o;
return age == person.age &&
Objects.equals(name, person.name);
/*Object方法容忍空指针;
其源代码如下
public static boolean equals(object a,object b)
{
boolean b=(a==b)||(a!=null&&a.equals(b));
return b;
}
*/
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
package day22;
public class equlas {
public static void main(String[] args) {
person p1=new person("胡澳宾",18);
person p2=new person("张天爱",18);
boolean b=p1.equals(p2);
System.out.println(b);
}
}
注意事项:
equals 方法在非空对象引用上实现相等关系:
- 自反性:对于任何非空引用值
x,x.equals(x)都应返回true。 - 对称性:对于任何非空引用值
x和y,当且仅当y.equals(x)返回true时,x.equals(y)才应返回true。 - 传递性:对于任何非空引用值
x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)应返回true。 - 一致性:对于任何非空引用值
x和y,多次调用 x.equals(y) 始终返回true或始终返回false,前提是对象上equals比较中所用的信息没有被修改。 - 对于任何非空引用值
x,x.equals(null)都应返回false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

浙公网安备 33010602011771号