jvm学习笔记
庖丁解码
这个作者很懒,什么都没留下…
展开
-
3.类成员的加载顺序
初始化:给类的静态变量赋值(在链接阶段会赋默认值,主动使用这个类,才会初始化)在给静态变量赋值时,是按照循序赋值的。并不是先给静态代码块赋值。如果静态字段在静态代码块 前,会先初始化静态字段当子类的成员变量可以在编译期确定时,jvm是不会初始化这个类(即不是主动引用这个类)。会将 这个常量加入 所使用该常量所在类的常量池中public class Test3 { public static void main(String[] args) { System.out.pri原创 2020-05-10 00:34:23 · 191 阅读 · 0 评论 -
2.类的初始化条件
申明:看圣思圆张老师的视频后总结的。我就做个笔记1.java成序的使用方式分为两类:主动使用被动使用2。每个类或者接口在“首次主动使用时”才会被初始化我的理解:A:只有在主动使用时静态变量才会被初始化B:静态变量只会被初始化一次3.主动使用的情况1.创建类的实例2.访问某个类或接口的静态变量,或者对该静态变量赋值注意:使用在编译时可以确定的常量,并不会初始化这个类编译时无法确定的常量,会初始化这个类3.调用类的静态方法4.反射5.初始化一个类的子类,其父类会被初始化注意:在初始原创 2020-05-09 18:25:46 · 350 阅读 · 0 评论 -
1.类的加载流程
申明:我这是看圣思圆_张龙老师视频后总结的。做个笔记1.加载:把二进制形式的java类型读入java虚拟机2.链接:1):验证:验证类的合法性2):准备:为类变量(静态变量)分配内存,设置默认值。类变量并没有显示初始化。3):解析:在类型的常量池中寻找类,接口和方法的符号引用。把这些符号引用替换成直接引用的过程3.初始化:为类的变量赋予正确的初始值类的实例化:1.为新的对象分配内存2.为实例对象赋默认值3.为实例对象赋正确的初始值二:1.类的加载的最终产品是位于内存中的Class原创 2020-05-09 18:17:34 · 157 阅读 · 0 评论