【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 @ 2022-09-15 17:08  植树chen  阅读(94)  评论(0编辑  收藏  举报