从今天开始,开始分析java源码。挖一个深坑,随缘更新
阅读jdk源码的版本为jdk1.8。
首先java.lang包开始,万物之源——Object.
java.lang.Object
/**
* 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.
*
*/
Object类结构层次的根,是所有类的祖先类。所有的对象,包括数组都实现了Object类的方法。
private static native void registerNatives();
static {
registerNatives(); // 对象初始化时自动调用此方法
}
registerNatives()方法,是一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用。
registerNatives,意思是本地注册。static修饰符,说明是静态方法,native修饰,说明该方法的实现java本身并没有完成,而是有c/c++来完成,形成.dll文件,主要作用是将C/C++中的方法映射到Java中的native方法,实现方法命名的解耦。registerNatives()修饰符为private,且并没有执行,作用何以达到?具体就看下面紧接着那一段静态代码块(如上)静态代码块是一个类在初始化过程中必定会执行的内容,所以在这里执行。