1、类的初始化
就像我们在代码中构造对象一样,需要调用类的构造方法。类的初始化也要执行()方法。此方法中包括此类的静态语句块和类变量赋值语句,类变量要赋值才行。如果一个只有类变量但是没有赋值也没有静态语句块,就可能不会有()方法(理解:赋值都没有,语句都没有,还要初始化干嘛)
2、子类和父类的初始化
和对象一样,子类初始化之前子类的父类必须完成初始化,即执行方法。
接口初始化:理解:接口有方法有变量,所以也能初始化。子类接口初始化不需要父类先完成初始化。(不懂就这样记)
3、每个类只能被加载一次,所以jvm在执行方法前会加锁防止多线程类被加载多次。
类的卸载
类的卸载要求很高,
1、通过此类建立的对象没有了
2、加载此类的类加载器没有了(因为可以通过类的getClassloader获取到加载此类的类加载器,而类加载器也保留它加载过的类)
3、该类的class对象也没有引用