所有类的超级父类、顶级父类、祖先类
常用方法:
- Class<?> getClass():返回本对象的所属类的Class对象
- int hashCode():返回本对象的hash值
- boolean equals(Object obj):比较两个对象的地址是否相等
- String toString():返回类的全限定名 + @ + 哈希码的16进制形式
- void finalize():需要子类重写,子类对象被GC回收时,会自动调用
public class Object {
// native代表本地实现,底层一般使用C语言实现
private static native void registerNatives();
public native int hashCode();
public boolean equals(Object obj) {
return (this == obj);
}
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
protected void finalize() throws Throwable { }
}
对equals进行重新讲解:
重写equals方法(直接用Generate生成)
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
//将形参转成this对象的数据类型
Girlfriend other = (Girlfriend) obj;
if (age != other.age)
return false;
if (Double.doubleToLongBits(height) != Double.doubleToLongBits(other.height))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (sex != other.sex)
return false;
return true;
}
注意事项:
- 重写equals方法一定要重写hashCode方法
- 在调用equals方法之前会先比较hashCode
- hashCode相等equals不一定相等
- equals相等hashCode一定相等
- String类是已经重写过equals方法的所以可以直接用该方法