java的Object类详解

Java对象的鼻祖 - Object

Object大部分方法都是native方法。native方法是在JVM源码层(C/C++)实现的,效率一般来说都是远高于Java中的非native方法。

 

1、private static native void registerNatives()

一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用

 

2、public final native Class<?> getClass()

获取对象的运行时class对象,class对象就是描述对象所属类的对象

 

3、public native int hashCode()

获取对象的散列值,散列值主要用在散列表中。Object中该方法默认返回的是对象的堆内存地址。

 

4、public boolean equals(Object obj)

该方法用于比较两个对象,如果这两个对象引用指向的是同一个对象,那么返回true,否则返回false。

 

5、protected native Object clone() throws CloneNotSupportedException

这个方法用于克隆对象。被克隆的对象必须实现java.lang.Cloneable接口,否则会抛出CloneNotSupportedException异常。

默认的clone方法是浅拷贝模式。所谓浅拷贝,指的是对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存。深拷贝则是会连引用的对象也重新创建。

 

6、public String toString() 

用于返回一个可代表对象的字符串。

默认返回格式如下:对象的class名称 + @ + hashCode的十六进制字符串。

 

7、public final native void notify()

唤醒在此对象监视器上等待的单个线程

 

8、public final native void notifyAll()

唤醒在此对象监视器上等待的所有线程。
 
 
9、public final native void wait(long timeout) throws InterruptedException
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
 
 
10、public final void wait(long timeout, int nanos) throws InterruptedException
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
 
 
11、public final void wait() throws InterruptedException 
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行 wait(0) 调用一样。   
当前线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待,直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。
 
 
12、protected void finalize() throws Throwable
这个方法用于在GC的时候再次被调用,如果我们实现了这个方法,对象可能在这个方法中再次复活,从而避免被GC回收。
 
 
 
 
 
 

 

posted @ 2020-02-14 14:50  得记点什么了  阅读(519)  评论(0编辑  收藏  举报