参考:https://www.jianshu.com/p/9cbed9f33a4d
public class Test {
public static void main(String[] args) {
Book book1 = new Book("狮子王",77.09D);
Book book2 = new Book("狮子王",77.09D);
//Book book2 = book1;
System.out.println(book1.hashCode());
System.out.println(book2.hashCode());
System.out.println(book1.equals(book2));
System.out.println(book1==book2);
}
static class Book{
private String name;
private Double price;
public Book(String name, Double price) {
this.name = name;
this.price = price;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return Objects.equals(name, book.name) &&
Objects.equals(price, book.price);
}
@Override
public int hashCode() {
return Objects.hash(name, price);
}
}
}
78820460
78820460
true
false
基本类型只能==比较
引用类型不重写equals方法时 equals比较的是内存地址
重写时则按照重新规则判断
有相同的hashcode两个对象不一定==
new 对象内存地址肯定不相同
来源:CSDN
作者:清晨细雨~
链接:https://blog.csdn.net/dream_snow2012/article/details/103475146