0.1、ClassLoader的动态加载机制
一、原则:
1、Java中的ClassLoader并非一次加载,而是在需要的时候才会加载。
2、static语句块在加载后只会执行一次。
3、dynamic语句块每次new新的对象都会执行。
* 执行在static语句块之后,构造函数之前
* 等同于构造方法中的语句
* 用的较少
4、java -verbose:class参数可以观察类的具体加载过程。
二、下面我们首先来看一段代码
class A{
public A(int i){
System.out.println("A("+i+")");//A(2)
}
}
class C{
static A a1 = new A(1);
public C(){
System.out.println("C()");//C()
}
static{
System.out.println("类C的static块");//类C的static块
}
{
System.out.println("类C的动态语句块--此方法会无条件的加在每个构造函数之前");//类C的动态语句块--此方法会无条件的加在每个构造函数之前
}
}
class D{
public D(){
System.out.println("D()的构造函数"); //D()的构造函数
}
}
public class Test {
public static void main(String[] args) {
System.out.println("mai