类加载过程的分析
public class Loader { static { System.out.println("我是main方法所在的类的静态代码块"); } { System.out.println("我是main方法所在的类的构造代码块"); } public Loader() { System.out.println("我是main方法所在的类的构造方法"); } public static void main(String[] args){ new Son(); new Loader(); } } class Person{ static { System.out.println("我是父类静态代码块"); } { System.out.println("我是父类构造代码块"); } public Person() { System.out.println("我是父类构造方法"); } } class Son extends Person{ static { System.out.println("我是子类静态代码块"); } { System.out.println("我是子类构造代码块"); } public Son() { System.out.println("我是子类构造方法"); } }

说明:
1.main()方法所在的类会被最先加载进来
2.使用new创建对象的时候,会去常量池里面寻找这个类的符号引用,找不到则将这个类加载进来
3.如果这个类存在父类,则它的父类也要加载进来
4.静态代码块的执行与类的加载有关,执行顺序:main()方法所在的主类 > 父类 > 子类
5.构造代码块与构造方法的执行与对象的创建有关,执行顺序:父类 > 子类,构造代码块 > 构造方法
即:父类 > 子类
静态代码块 > (构造代码块 > 构造方法)
浙公网安备 33010602011771号