Object是所有类的超类,下面是我对它的部分方法的理解。
1.
public final native Class<?> getClass()
此方法返回对象的运行时类
2.
public native int hashCode();
此方法返回对象的哈希值,hashCode方法实现的约定如下:
- 对于同一个对象的多次hashCode方法执行,假如对象的equals方法中比较的信息没有修改,那么hashCode方法必须始终返回同样的整数;
- 如果2个对象按照equals方法比较是相等的,那么2个对象的hashCode方法也应该返回相同的整数;
- 如果2个对象按照eauals方法比较不相等,不要求2个对象的hashCode方法返回相同的整数。程序员也应该意识到,为不相等的对象生成不同的哈希值可能会提高哈希表性能
3.
public boolean equals(Object obj)
判断一些对象是否和自己相等。实现此方法的时候应该遵守hashCode方法的规范
4.
protected native Object clone()
返回对象的拷贝(副本),Object类的clone方法是浅拷贝,可以通过重写clone方法来实现深拷贝,调用Object的clone方法必须实现Cloneable接口,否则会抛出 CloneNotSupportedException异常
5.
public String toString()
返回对象的字符串表示形式,返回的值是:类名+"@"+hashCode()的十六进制,通常实现类会重写该方法以便返回自己希望的字符串表示
6.
public final native void notify()
notify方法用于唤醒正在等待监视器锁的线程(被唤醒的线程要想重新获得监视器锁,必须等待调用notify方法的当前线程放弃监视器锁),如果等待监视器锁的线程有多个,那么会随机选择一个线程进行唤醒。只有作为监视器锁持有者的线程才可以调用notify方法
7.
public final void wait()
wait方法导致当前线程休眠,直到被唤醒。唤醒的方式可能是其它线程执行notify或者notifyAll方法,或是被其它线程中断,或是等待一定的时间后被唤醒,或是被虚假唤醒,wait方法同notify一样,只能被监视器锁的持有者调用。