java语言类型分为两大类:基本类型和引用类型
引用类型:类、接口、数组类和泛型参数(泛型参数会在编译过程中被擦除)
操作顺序:加载->链接(验证、准备、解析)->初始化
加载
公共父类是启动器加载类
方式是:双亲委派模式
关于自定义类加载器,可以参考一下博客
https://www.cnblogs.com/xrq730/p/4847337.html
链接
验证:保证加载的类满足虚拟机的约束
准备:为被加载类的静态字段分配内存,初始化常量(final)
准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存都将在方法区中进行分配。这个阶段中有两个容易产生混淆的概念需要强调一下,首先,这时候进行内存分配的仅包括类变量(被static修饰的变量),而不包括实例变量,实例变量将会在对象实例化随着对象一起分配在Java堆中。
解析:解析将符号引用解析为实际引用,如果符号引用指向一个未加载的类,那么解析阶段将触发这个类的加载
初始化
运行<clinit>方法为静态变量赋值
网友评论