格式
static{ }
特点:
随着类的加载而加载,只执行一次
对象的初始化过程
class Person{ String name; int age; static String fav; static{ System.out.println("静态代码块"); } { System.out.println("构造代码块"); } public Person() { System.out.println("构造函数"); } } public class ArrayTool{ public static void main(String[] args) { Person stu= new Person(); } }
S1:jvm的加载器将person.class文件加载到内存中(方法区)(static变量,方法,代码块一起加载)
S2:执行static代码块
S3:在堆中开辟空间,分配内存地址
S4:将name,age放入对内存,分别初始化为null,0
S5:以下操作
s6:执行构造代码块
S7:执行构造函数
S8:将堆内存中对象的地址赋给栈内存中的引用