【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
image

@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 +
'}';
}
posted @   植树chen  阅读(125)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示