1.类的加载过程
- 加载 :查找并加载类的二进制数据
- 连接:
1.验证:确保被加载的类的正确性
2.准备:为类的静态变量分配内存,并将其初始化为默认值
3.解析:把类的符号引用转为直接引用 - 初始化
为类的静态变量赋予正确的初始值
java程序对类的使用方式可分为两种
- 主动使用
- 被动使用
所有的java虚拟机实现必须在每个类或接口被java程序“首次主动使用”时才会被初始化他们
2.主动使用的场景
1.创建类的实例
2.访问某个类或接口的静态变量,或者对该静态变量赋值
3.调用类的静态方法
4.反射
5.初始化一个类的子类
6.Java虚拟机启动时被标明为启动类的类
7.JDK1.7开始提供的动态语言支持
除了以上七种情况,其他使用java类的方式都会被看作是对类的被动调用,都不会导致类的初始化
3.加载.class文件的方式
- 从本地系统中直接加载
- 从网络下载.class文件
- 从zip jar 等归档文件中加载
- 从转悠数据库中提取.class
- 将java源文件动态编译为.class文件
练习题:
public class MyText{
public static void main(String[] args){
System.out.printIn(MyChild.str)
}
}
class MyParent{
public static String str = "hello world";
static{
System.out.printIn("MyParent static block")
}
}
class MyChild{
public static String str1 = "welcome";
static{
System.out.printIn("MyChildstatic block")
}
}