equals:
Student student = new Student("life",22);
Student student2 = new Student("life",22);
//双== 比较两个对象的内存地址
System.out.println(student==student2);
//object父类中equals 比较两个对象的内存地址是否相同
System.out.println(student.equals(student2));//没有重写object父类方法equals返回false
/*
* 底层:public boolean equals(Object obj){
* return(this==obj);
* }
* equals 比较两个对象值是否相同
* == 比较两个对象的内存地址是否相同
* 条件:如果自定义的对象没有重写object父类的话,则是在比较两个对象的 内存地址是否相同
*/
重写equals则是:
/*
* 重写父类中equals 实现比较两个对象的成员属性值是否相同
*/
public boolean equals(Object object) {
//this student1(student1.equals(student2))
//如果两个对象的引用内存地址相同,则直接返回true
if (this==object) {
return true;
}
//比较两个对象的类型是否一致object
if (object==null||this.getClass()!=object.getClass()) {
return false;//不会比较两个成员属性值
}
//两个对象的类型是一致的 需要比较两个对象属性值
//String类型中 equals方法比较,两个字符串值相等===String底层重写object
Student student2 = (Student) object;
return this.age==student2.age&&this.name.equals(student2.name);
}