equals和==的区别

==(代表双方是否相同)

  • 基本类型:值是否相等
  • 引用类型:是否为同一个对象(引用的地址是否相同)

equals方法(对象内容是否相等)

  • equals方法是object里面的方法 (如果不重写就比较两个对象是否为同一个对象)
public class Object {
    public boolean equals(Object obj) {
        return (this == obj);
    }
}
  • 没有重写(比较两个是否为同一个对象)返回:false
public class Test {
    public static void main(String[] args) {
        User user1 = new User(1001, "张三");
        User user2 = new User(1001, "李四");
        System.out.println(user1.equals(user2));
    }

}
class User {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }
}
  • 重写(比较两个对象的id)返回:true
public class Test {
    public static void main(String[] args) {
        User user1 = new User(1001, "张三");
        User user2 = new User(1001, "李四");
        System.out.println(user1.equals(user2));
    }

}
class User {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return id == user.id;
    }

    @Override
    public int hashCode() {
        return id;
    }
}
posted @ 2020-04-28 23:27  flyduck  阅读(50)  评论(0)    收藏  举报