“==” :比较基本类型变量的值;以及引用对象的地址
equals():不可比较基本类型的变量。对于引用对象,未重写前等价于“==”,重写后,比较每个成员变量的值。
hashcode():equals()运行时一般会先比较哈希值以提高效率。
重写:
equals():不重写时,是直接比较引用对象的地址,重写则是成员变量。
hashcode():不重写时,一般是根据地址来生成哈希值(由JVM预设哈希算法),重写时,会根据成员变量。
@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(author, book.author); } @Override public int hashCode() { return Objects.hash(name, author); }