Java.lang.Object 类

Object是所有类默认的父类,即在编译器编译时会默认的为所有类增加Object的继承,因此Object类的方法是所有类都可以调用的。
以下便是Object所有签名方法:

    private static native void registerNatives();
    public final native Class<?> getClass();
    public native int hashCode();
    public boolean equals(Object obj);
    protected native Object clone() throws CloneNotSupportedException;
    public String toString();
    public final native void notify();
    public final native void notifyAll();
    public final native void wait(long timeout) throws InterruptedException;
    public final void wait(long timeout, int nanos) throws InterruptedException;
    public final void wait() throws InterruptedException;
    protected void finalize() throws Throwable;

如上所示,即是Object的所有方法,其中绝大部分都是JNI的本地方法,
getClass:获取类的Class
hashCode:获取对象的散列值
clone:实现对象的浅拷贝
wait(..):阻塞线程,释放对象锁
notify(..):唤醒线程,尝试夺回对象锁

Object也对equals做了默认实现

    public boolean equals(Object obj) {
        return (this == obj);
    }

从源代码可以知道,Object的equals实现只是简单对两个对象地址做了比较,并没有做深度比较,所以要实现深度比较,还是要重新equals方法,例如String类所做的那样。
虽然Object是所有类的父类,但是并没有多复杂,其中对于线程处理的wait/notify系列方法要知道使用方法,wait/notify系列方法与Thread中sleep等系列方法的区别。

猜你喜欢

转载自blog.csdn.net/securitit/article/details/51564261