Class {@code Object} is the root of the class hierarchy.
Every class has {@code Object} as a superclass.
Object :是所有类的父类,所有类都继承了Object
方法列表:
在参数列表中,
N:代表该方法是一个native方法。
F:代表该方法是一个final方法。
S:代表该方法是一个static方法。
1、native:native是java中的一个关键字,用于修饰方法,表明该方法是一个原生方法。
eg: public native int hashCode();
认识 native,首先要了解java本地接口 即 JNI,Java Native Interface
凡是一种语言,都希望是纯。比如解决某一个方案都喜欢就单单这个语言来写即可。Java平台有个用户和本地C代码进行互操作的API,称为Java Native Interface (Java本地接口)。
JNI主要作用是:通过JNI接口调用其他语言来实现对底层的访问。
Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。
JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(java Software Development Kit,SDK)的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员从本机代码内部调用Java代码。
native方法表明该方法本身不进行实现,而是直接调用其他语言编写的程序。
资料参考:https://www.cnblogs.com/b3051/p/7484501.html
2、wait()、notify()、notifyAll()方法
这三个方法主要与多线程密切相关,程序的并发编程都是通过多线程来实现的。
并行合并发:
并发与并行是两个既相似但是却不相同的概念:
并发性:又称共行性,是指处理多个同时性活动的能力,。
并行:指同时发生两个并发事件,具有并发的含义。并发不一定并行,也可以说并发事件之间不一定要同一时刻发生。
并发的实质是一个物理CPU(也可以是多个物理CPU)在若干个程序之间多路复用,并发性是对有限物理资源强制行使 多用户共享以提高效率。
并行指两个或两个以上事件或活动在同一时刻发生,在多道程序环境下,并行使多个程序同一时刻可在不同CPU上同时执行。
并发是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为CPU要在多个程序之间切换)运行多个程序。
并行是在多个CPU的情况下,多个CPU同时运行多个程序。
wait():使当前线程释放锁,进入等待队列。
notify():唤醒等待队列中的第一个线程。
notifyAll():唤醒等待队列中的所有线程。
线程的生命周期:
参考资料:https://www.cnblogs.com/duanxz/p/3733179.html
3、hashCode():返回该对象的哈希值。
Object 的 hashcode 方法是本地方法,也就是用 c 语言或 c++ 实现的,该方法直接返回对象的 内存地址。
4、equals():判断两个对象是否相等。
我们在创建一个类的时候,可以按照自己的需要重写hashCode()和equals()方法。
5、finalize()
- finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。
(1) 首先,大致描述一下finalize流程:当对象变成(GC Roots)不可达时,GC会判断该对象是否覆盖了finalize方法,若未覆盖,则直接将其回收。否则,若对象未执行过finalize方法,将其放入F-Queue队列,由一低优先级线程执行该队列中对象的finalize方法。执行finalize方法完毕后,GC会再次判断该对象是否可达,若不可达,则进行回收,否则,对象“复活”。
(2) 具体的finalize流程:
对象可由两种状态,涉及到两类状态空间,一是终结状态空间 F = {unfinalized, finalizable, finalized};二是可达状态空间 R = {reachable, finalizer-reachable, unreachable}。各状态含义如下:
- unfinalized: 新建对象会先进入此状态,GC并未准备执行其finalize方法,因为该对象是可达的
- finalizable: 表示GC可对该对象执行finalize方法,GC已检测到该对象不可达。正如前面所述,GC通过F-Queue队列和一专用线程完成finalize的执行
- finalized: 表示GC已经对该对象执行过finalize方法
- reachable: 表示GC Roots引用可达
- finalizer-reachable(f-reachable):表示不是reachable,但可通过某个finalizable对象可达
- unreachable:对象不可通过上面两种途径可达