Java上帝类(Object类)源码总结(2)
来源:互联网 发布:表白app源码下载 编辑:程序博客网 时间:2024/05/16 00:45
protected native Object clone() throwsCloneNotSupportedException;
克隆(拷贝)方法,Object类实现的是浅克隆,这里要提下浅克隆(浅拷贝)和深克隆(深拷贝),用一句最简单的描述:当对象a1的成员包含了对B类实例对象的引用b1时,这时如果要克隆一份a1对象给a2,只克隆对象a1的基本类型成员和引用b1时,这时a1和a2共用b1引用指向的对象,这时这就叫浅克隆(浅拷贝),如果不仅克隆了上面的内容,而且还克隆了一份b1引用指向的对象,这时a1和a2分别拥有自己的一份b1对象,这就叫深克隆(深拷贝)。
public String toString() {
return getClass().getName() +"@" + Integer.toHexString(hashCode());
}
Object类返回的是 类名@内存地址,子类可以重写该方法,比如String
public String toString() {
return this;
}
返回的就是该String对象本身。
public final native void notify();
随即唤醒一个因为调用该对象的wait()方法而阻塞的线程。前提是获取到了该对象的锁才能使用,说白了这个方法就是在synchronized同步语句块中执行的。
public final native void notifyAll();
随即唤醒所有因为调用该对象的wait()方法而阻塞的线程。
public final native void wait(long timeout)throws InterruptedException;
调用该方法阻塞了当前线程,并且释放对象锁,释放cpu资源,进入等待池中等待唤醒,如果在参数时间后没受到notify唤醒,则自动唤醒,并挪到锁等待池中,获取到锁资源和cpu资源后执行。
public final void wait(long timeout, intnanos) throws InterruptedException
这个方法跟上面的方法内容基本一致,只是时间的颗粒度细到了纳秒,大概意思是如果nanos参数大于0的话,timeout加一,再调用wait(timeout),可能是计算机实现不了纳秒级别的时间粒度,实际上还是以毫秒为单位,估计是为以后硬件进步后流了一个超前的接口。
public final void wait() throws InterruptedException{
wait(0);
}
没带时间参数的wait方法,表示一直阻塞直到被notify唤醒。
protected void finalize() throws Throwable{ }
在虚拟机的垃圾回收线程GC回收该对象的堆内存前默认调用finalize()方法,相当于C++中的析构方法。需要注意一点的就是,这个方法的默认调用时机和GC一样是由虚拟机决定的,如果是要求及时调用的话可以手工调用,当然GC回收前还会调用一次。
- Java上帝类(Object类)源码总结(2)
- Java上帝类(Object类)源码总结(1)
- (JAVA)Object类总结
- Java常用类源码探究(一):Object类
- Java Object类源码阅读
- java Object 类 源码学习
- Java Object 类源码分析
- java源码分析 ---- Object类
- Java-Object类源码解析
- Java Object类讲解 上帝类及其一些方法的分析
- Java基础学习总结(7)——Object类
- java基础总结12-面向对象8(Object类)
- Object上帝类中方法的那些事儿
- JDK源码(一)Object类
- Java源码解读:顶级父类Object
- JAVA 1.6源码解析-Object类
- Java源码分析之Object类
- JDK源码学习--java.lang.Object类
- 《机器学习》周志华,勘误修订(带公式显示)
- 我如何用前端技术得到XXOO网站的VIP
- Android:MaterialTextField(TextInputLayout之另一种实现)
- Highcharts、Ajax、PHP交互
- leetcode-102. Binary Tree Level Order Traversal
- Java上帝类(Object类)源码总结(2)
- linux 文件夹空间操作相关命令
- angularjs之全局函数
- 关于锚点定位的一些知识
- 非[无]root权限 服务器 下安装python以及python模块
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
- Android窗口Window和WindowManager详解
- 51nod-1616 最小集合
- Storing nested objects in Redis