文章目录
- 章节概览
- 笔记
-
- 1. 遇到 `new`, `getstatic`, `putstatic`, `invokestatic` 这 4 条字节码指令时,类没有初始化时,则初始化该类
- 2. 使用 java.lang.reflect 包进行 `反射` 时,类没有初始化,则初始化该类
- 3. 将常量池内的符号引用替换为直接引用
章节概览
完整版的内容请点击这里
完整版的内容请点击这里
完整版的内容请点击这里
本章节主要分为 3 个部分:① 类加载时机,② 类加载过程,③ 类加载器
第 7 章节思维导图(更新于2019年4月17日)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPRJmNOdlYwJ1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1ATN3IDNwYTM3EDNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
笔记
1. 遇到 new
, getstatic
, putstatic
, invokestatic
这 4 条字节码指令时,类没有初始化时,则初始化该类
new
getstatic
putstatic
invokestatic
生成这 4 条指令的最常见的 Java 代码场景是:
- 使用 new 关键字实例化对象的时候
- 读取或设置一个类的静态字段(被 final 修饰,已在编译期把结果放入常量池的静态字段除外)的时候
- 调用一个类的静态方法的时候
2. 使用 java.lang.reflect 包进行 反射
时,类没有初始化,则初始化该类
反射
这里是关于反射的一些知识
Java 反射由浅入深
反射的用途及实现
3. 将常量池内的符号引用替换为直接引用
符号引用:用一组符号描述所引用的目标,只要能无歧义的定位到目标即可
直接引用:用指向目标的指针、相对偏移量或一个能间接定位到目标的句柄