【Java基础】重写equals、toString方法
1.Object类中的equals()和toString()
(1)Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同,只能用于引用数据类型
public boolean equals(Object obj) {
return (this == obj);
}
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
2.重写equals()
比较User类的name和age是否相等。
public class User {
String name;
int age;
}
重写后的equals()
public boolean equals(Object object){
if (object==this){ //地址值相等则返回true
return true;
}
if (object instanceof User){ //如果object对象是User类或User子类对象
User user = (User)object; //强转为User类
return this.age == user.age && this.name.equals(user.name); //name为引用类型,调用String类的equals()方法
}
return false;
}
3.重写toString()
public String toString(){
return "User [name="+name+",age="+age+"]";
}
4.IDEA中自动生成
使用快捷键Alt+Insert
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age &&
Objects.equals(name, user.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}