java源码阅读(1)Object类

1.Object

/*
 * Copyright (c) 1994, 2012, Oracle and/or its affiliates【附属企业】. All rights reserved.
 * ORACLE PROPRIETARY【专利】/CONFIDENTIAL【机密】. Use is subject to license terms【条款】
 *【使用受许可条款约束】
 */
/**
 * Class {@code Object} is the root of the class hierarchy【阶级】.
 * Every class has {@code Object} as a superclass. All objects,
 * including arrays, implement the methods of this class.
 *
 * @author  unascribed
 * @see     java.lang.Class
 * @since   JDK1.0
 */
private static native void registerNatives();
    static {
        registerNatives();
    }
  • 注意点:

    • native:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。
    • JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(Java Software Development Kit,SDK)的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员从本机代码内部调用Java代码。
  • 这个方法应该是为了加载非java实现的代码
public final native Class<?> getClass();
  • 这个方法是返回运行时类 Returns the runtime class of this {@code Object}.
public native int hashCode();
  • 返回对象的哈希码值。
public boolean equals(Object obj) {
    return (this == obj);
}
  • 指示一些其他对象是否等于此。 底层调用的就是==比较对象的引用哦。
protected native Object clone() throws CloneNotSupportedException;
  • 创建并返回此对象的副本。
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
  • 底层的toString方法就是 一个组装的字符串
public final native void notify();
  • 唤醒正在等待对象监视器的单个线程。
public final native void notifyAll();
  • 唤醒正在等待对象监视器的所有线程。
public final native void wait(long timeout) throws InterruptedException;
  • 导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法。
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);
}
  • 导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法,或者某些其他线程中断当前线程,或一定量的实时时间。
public final void wait() throws InterruptedException {
    wait(0);
}
protected void finalize() throws Throwable { }
  • 当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。

本文链接:

https://heyzen.club/index.php/J/280.html
1 + 9 =
快来做第一个评论的人吧~