类加载的过程主要有三个阶段:加载、链接、初始化
为类变量分配内存,并设置该类变量的默认初始值
这里不包括final修饰的static,因为final(常量)在编译时就分配了,准备阶段会显示初始化
这里不会为实例变量分配,因为类变量在方法区,而实例变量会随着对象一起分配到堆中
解析主要是把常量池中的符号引用转换为直接引用的过程
解析动作分为四类:包括类或接口的解析、字段解析、类方法解析、接口方法解析
初始化阶段就是执行类构造器方法( )的过程
此方法不需要定义,是javac编译器自动收集类变量和静态代码块
()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块(static{}块)中的语句合并产生的,编译器收集的顺序由语句在源文件中出现的顺序所决定
若该类具有父类,则JVM会保证在执行子类的()前,父类的()已经执行完毕
虚拟机会保证一个类的()方法在多线程环境中被正确地加锁和同步