在Java中,经常提到一个词“万物皆对象”,其中的“万物”指的是Java中的所有类,而这些类都是Object类的子类;
Object主要提供了11个方法,大致可以分为六类:
对象比较:
- public native int hashCode(): native方法,用于返回对象的哈希码;
public native int hashCode();
public int hashCode(){
return Objects.hash(name,age);
}
按照约定,相等的对象必须具有相等的哈希码,如果重写了equals方法,就应该重写hashCode方 法,可以使用Objects.hash()来生成哈希码;
- public boolean equals(Object obj): 用于比较2个对象的内存地址是否相等
public boolean equals(Object obj) {
return (this == obj);
}
如果比较的是两个对象的值是否相等,就要重写该方法,比如String类、Integer类等都重写了该方法。举个例子,假如有一个Person类,我们认为只要年龄和名字相同,就是同一个人,那么就可以这样重写equals方法;
class Person1 {
private String name;
private int age;
// 省略 gettter 和 setter 方法
public boolean equals(Object obj) {
if (this == obj)