Object类是一切类的父类(包括各种数据结构)
其中有:
private static native void registerNatives();
static{ registerNatives();}
@HotSpotIntrinsicCandidate
publiv Object(){}
@HotSpotIntrinsicCandidate
public final native Class<?> getClass();
@HotSpotIntrinsicCandidate
public native int hashCode();
public boolean equals(Object obj){ return (this==obj);}
@HotSpotIntrinsicCandidate
protected native Object clone() throws CloneNotSupportedException;
public String toString() { return getClass().getName()+"@"+Integer.toHexString(hashCode());}
@HotSpotIntrinsicCandidate
public final native void notify();
@HotSpotIntrinsicCandidate
public final native void notifyAll();
public final void wait() throws InterruptedException { wait(0L); }
public final native void wait(Long timeoutMillis) throws InterruptedException;
public final void wait(Long timeoutMillis, int nanos) throws InterruptedException {
检查时间小于零抛出异常
检查纳秒在0-999999之间 否则抛出异常
把时间++; 调用wait(timeoutMillis);
}
@Deprecated(since="9")
protected void finalize() throws Throwable { }
一共13个方法。
其中被标注@HotSpotIntrinsicCandidate注解的有6个,除了构造方法和hashCode()方法,其他均为native修饰的本地方法
标记@HotSpotIntrinsicCandidate注解的方法 说明是HotSpot VM的内线代码,是用C语言或汇编语言等计算机底层语言编写的本质代码。
其中有5个方法是关于线程控制的 notify() notifyAll() wait() wait(Long timeoutMillis) wait(Long timeoutMillis, int nanos) ;
而第一个方法 registerNatives() ,代表着将该类的所有native修饰的方法进行注册,调用native修饰的方法时,自动会去调用对应的本地方法。因此无数的继承或实现类, 本地方法相同则对应的调用就相同。
static 静态代码块代表在类加载的时候就会进行注册。
而最后的 finalize() 方法,则是在GC回收的时候调用,对该类的对象进行销毁,释放内存空间。 在JDK9中被标记为过时。