首先所有类都默认继承Object类
1.equals方法
equals的功能是比较相不相同,大部分场景若想调用该方法需要重写equals方法,因为Object原生的方法是对地址进行比较。
以下代码就是通过姓名进行比较。
class Add {
public int age;
public String name;
@Override
public boolean equals(Object obj){c
Add arr = (Add)obj;
if(arr.name == this.name){
return true;
}
else{
return false;
}
}
public Add(int age,String name) {
this.age = age;
this.name = name;
}
}
public class Main {
public static void main(String[] args) {
Add add = new Add(18,"wa");
Add arr = new Add(19,"li");
System.out.println(add.equals(arr));
arr.name = "wa";
System.out.println(add.equals(arr));
}
}
2.hashcode方法
该方法是算一个对象的存储位置。
class Add {
public int age;
public String name;
@Override
public int hashCode() {
return Objects.hash(age, name);
}
public Add(int age, String name) {
this.age = age;
this.name = name;
}
}
public class Main {
public static void main(String[] args) {
Add add = new Add(18,"wa");
Add arr = new Add(19,"li");
System.out.println(arr.hashCode());
System.out.println(add.hashCode());
arr.name = "wa";
arr.age = 18;
System.out.println(arr.hashCode());
}
}
以上是hashcode方法,以及hashcode配合equals配合使用,当姓名和年龄相同时就认为是同一个学生,则存储位置相同