Java类的加载
- Java程序的加载过程:.java文件 —> .class —> 类加载器生成Class对象 —> 实例化类对象
2.Java程序加载过程分析案例
Demo
public Class Test{
public static void main(String[] args){
User user = new User();
}
}
class User{
public String name;
public int age;
public String sex;
static {
System.out.println("User类的静态代码块");
}
static int m;
public User(){
System.out.println("User类的无参构造方法");
}
}
结合画图分析
程序在进入类加载器后会有哪些动作呢?
1.将.class文件字节码内容加载到内存,也就是将类的静态变量、静态方法、常量池、代码都存放在方法区中
2. 同时在堆中生成Class对象,Class对象包含了类的所有内容,作为我们调用类的一个入口
3. 将main方法压栈,初始化静态变量
4. 实例化类对象
所以我们知道java程序在类加载器加载的时候就会生成所有的Class对象,以作为我们访问类数据结构的入口。在实例化类对象的时候会先执行静态代码块和赋值静态变量