关闭

Java.lang.Object 类

标签: Java
135人阅读 评论(0) 收藏 举报
分类:

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等系列方法的区别。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23252次
    • 积分:536
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    文章存档
    最新评论