2019-04-25 java.lang.Object

Object 对象 所有类的基类

java是单根继承语言,Object就是所有类的基类或根类,所有的类都继承自Object

构成

主要由是一个方法构成,其中包含部分 final native的方法

最开始又一个native方法registerNatives native修饰的方法为提供外部实现的方法,方法调用时真正运行的是外部实现,并且通过一个静态初始化块初始化了该方法

private static native void registerNatives();
    static {
        registerNatives();
}

然后同样是native修饰的getClass方法和hashCode方法

//返回当前运行时对象的Class对象
public final native Class<?> getClass();
//该方法返回对象的哈希码,主要使用在哈希表中,比如JDK中的HashMap。
public native int hashCode();

判断是否是同一个对象 地址比较

//比较两个对象是否相等。Object类的默认实现,即比较2个对象的内存地址是否相等:
public boolean equals(Object obj) {
        return (this == obj);
    }

又是一个native修饰的方法clone

//创建并返回当前对象的一份拷贝
protected native Object clone() throws CloneNotSupportedException;

对象以字符串方式表示 toString方法,默认该方法是反馈类名称@分隔然后加上Object的hashCode值的16进制表示

//Object对象的默认实现,即输出类的名字@实例的哈希码的16进制:
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

native方法notify和notifyAll和wait

//唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果所有的线程都在此对象上等待,那么只会选择一个线程。选择是任意性的,并在对实现做出决定时发生。一个线程在对象监视器上等待可以调用wait方法。
public final native void notify();
//跟notify一样,唯一的区别就是会唤醒在此对象监视器上等待的所有线程,而不是一个线程。
public final native void notifyAll();
//wait方法会让当前线程等待直到另外一个线程调用对象的notify或notifyAll方法,或者超过参数设置的timeout超时时间。
public final native void wait(long timeout) throws InterruptedException;

然后是两个public方法wait

//跟wait(long timeout)方法类似,多了一个nanos参数,这个参数表示额外时间(以毫微秒为单位,范围是 0-999999)。 所以超时的时间还需要加上nanos毫秒。
public final void wait(long timeout, int nanos) throws InterruptedException {
        if (timeout < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }

        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
                                "nanosecond timeout value out of range");
        }

        if (nanos > 0) {
            timeout++;
        }

        wait(timeout);
    }

//跟wait(long timeout)方法类似 
public final void wait() throws InterruptedException {
        wait(0);
    }

一个protected的finalize方法

//该方法的作用是实例被垃圾回收器回收的时候触发的操作,就好比 “死前的最后一波挣扎”。
protected void finalize() throws Throwable { }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,647评论 0 11
  • Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Ob...
    时待吾阅读 3,424评论 0 1
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 6,353评论 0 3
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,822评论 0 4
  • 孤独时 我是我的王 红尘中 我就是那一粒尘埃
    YZjsf阅读 1,162评论 0 1

友情链接更多精彩内容