From 8caaf1ee47baf448b5471e479ceb113629919a81 Mon Sep 17 00:00:00 2001 From: hmao Date: Tue, 3 Nov 2020 22:18:05 -0800 Subject: [PATCH] Create Java1 --- Java1 | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Java1 diff --git a/Java1 b/Java1 new file mode 100644 index 0000000..00ce9a9 --- /dev/null +++ b/Java1 @@ -0,0 +1,9 @@ +# 类的加载时机 +1. 当虚拟机启动时,初始化用户指定的主类,就是启动执行的 main 方法所在的类; +2. 当遇到用以新建目标类实例的 new 指令时,初始化 new 指令的目标类,就是 new 一个类的时候要初始化; +3. 当遇到调用静态方法的指令时,初始化该静态方法所在的类; +4. 当遇到访问静态字段的指令时,初始化该静态字段所在的类; +5. 子类的初始化会触发父类的初始化; +6. 如果一个接口定义了 default 方法,那么直接实现或者间接实现该接口的类的初始化, 会触发该接口的初始化; +7. 使用反射 API 对某个类进行反射调用时,初始化这个类,其实跟前面一样,反射调用 要么是已经有实例了,要么是静态方法,都需要初始化; +8. 当初次调用 MethodHandle 实例时,初始化该 MethodHandle 指向的方法所在的 类。