Java doc中这样描述 Object:
"The root class of Java class hierarchy. All non-primitive types (including arrays) inherit either directly or indirectly from this class".
即,Java中除基础类型之外的类型(包括Enum),都是直接或间接地继承自Object类。
Object类中的方法有:
protected Object clone();
调用private native 方法 internalClone()进行浅拷贝。
public void equals(Object o);
equals()方法是比较两个对象。默认的实现是比较2个对象的引用在堆中的地址。
public int hashCode()
hashCode()返回对象的hash code。默认返回的是引用的地址。
equals()返回true的两个对象,hash code的值必须相同。所以,两个函数的重写必须保持同步。
protected void finalize();
当gc判断认定该对象不再被任何其他对象引用时,回收该对象前会掉用finalize()方法来进行一些操作,比如回收一些资源。
public Class<?> getClass();
返回该对象的Class类型。
notify和wait
public final native void notify();
public final native void notifyAll();
public final native void wait();
public final void wait(long millis);
以上4个final方法主要用来实现线程间的同步机制。
可以简单理解为,调用object的wait来释放锁,线程进入等待。当object调用notify后,唤醒之前调用该object的wait方法的线程。notify唤醒1个wait线程,notifyAll唤醒所有对应的wait线程。
public String toString();
默认实现为:
public String toString() {
return getClass().getName() + '@' + Integer.toHexString(hashCode());
}