前言
Object类是Java类层次结构的根。也就是说,Object类是所有类的父类。所有的对象,包括数组,都实现了这个类的方法。
源码分析
定义
public class Object {
...
}
Object类的定义就是一个普通的类的定义。
getClass()方法
public final native Class
<?> getClass();
getClass()方法返回该对象运行时的Class对象。
hashCode()方法
public native int hashCode();
hashCode()方法返回该对象的哈希值,默认是该对象的内存地址。该方法通常用于哈希表,比如HashMap。
equals()方法
public boolean equals(Object obj
) {
return (this == obj
);
}
equals()方法比较该对象是否“等于”另一个对象。该方法等同于"=="操作符,即直接比较两个引用所指向的内存地址,内存地址相等表示是同一个对象。
clone()方法
protected native Object
clone() throws CloneNotSupportedException
;
clone()方法创建并返回该对象的一个副本。
toString()方法
public String
toString() {
return getClass().getName() + "@" + Integer
.toHexString(hashCode());
}
toString()方法返回该对象的字符串表示形式。返回的字符串应该简洁但信息丰富,让人易于阅读。建议所有的子类都重写该方法。
notify()方法
public final native void notify();
public final native void notifyAll();
notify()方法唤醒正在等待该对象的单个线程。notifyAll()方法唤醒所有正在等待该对象的线程。
wait()方法
public final native void wait(long timeout
) throws InterruptedException
;
public final void wait(long timeout
, int nanos
) throws InterruptedException
{
...
if (nanos
> 0) {
timeout
++;
}
wait(timeout
);
}
public final void wait() throws InterruptedException
{
wait(0);
}
wait()方法使得当前线程等待,直到另一个线程调用该对象的notify()方法或者notifyAll()方法,或者其它一些线程中断了当前线程,或者已经过了指定的等待时间。
finalize()方法
protected void finalize() throws Throwable
{ }
finalize()方法当垃圾收集器确定没有其它对象引用该对象时被调用。子类重写该方法来处理系统资源或者执行其它的清理工作。需要注意的是:finalize()方法被调用的时间并不确定。
总结
Object类是所有类的父类。hashCode()方法默认返回该对象的内存地址。equals()方法默认等同于"=="操作符,即直接比较两个引用所指向的内存地址,内存地址相等表示是同一个对象。
参考
https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html