equals默认情况下比较的是对象的地址值
equlas快捷生成方式:右键—》Generate—》equals() and hashCode()—》next多次—》finish
package DEMO2.DAY9_demo11_equals;
public class Demo {
public static void main(String[] args) {
Student s1 = new Student("李四",19);
Student s2 = new Student("李四",19);
Student s3 = new Student("赵六",20);
//在我的眼中,只要姓名和年龄相同,那么就是同一个东西(对象)
//但代码不是这样认为的,所有来判断一下s1是否等于s2
// System.out.println(s1.equals(s2));
// System.out.println(s2.equals(s3));
//equals默认情况下比较的是对象的地址值,所以两个比较显示的都是false
//对equals进行增强,判断所有属性的值
String sss1 = "sss";
String sss2 = "ddd";
sss1.equals(sss2);//String能判断相等,因为string类能对object类进行增强
}
}
class Student{
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
//判断地址值
if(this == obj){
return true;
}
//判断类型
if(!(obj instanceof Student)){
return false;
}
//只要姓名和年龄相同,那么就是同一个东西(对象)
Student objStudent = (Student)obj;//这个强转是把s2强转为Student的类型
if(this.name.equals(objStudent.name) && this.age == objStudent.age){
// &&表示并且
return true;
}
return false;
}
}



