代码块
public class Test2{
public static void main(String[] args){
new TestA().fun();
}
}
class TestA{
public TestA{
System.out.println("3.构造器...");
}
{//代码块
System.out.println("2.代码块...");
}
static {//静态代码块
System.out.println("1.静态代码块...");
}
public void fun() { //具名代码块
System.out.println("4.方法...");
}
}
① 当 new TestA() 代码被执行时:
new 关键字创建了对象 -> 类被加载 [先执行静态代码块 再执行普通代码块]
TestA() 表示使用当前构造器去初始化类对象的信息
② 观察执行顺序得知:代码块的执行要优先于构造器 [类被加载 代码块被执行]
所以 在某些场景下 我们可以选择使用代码块来完成一些信息的加载任务
譬如:在 JDBC 中 我们需要在类加载时 将数据库的驱动加载至 JVM 中 一般选择静态块来实现
③ 我们还可以使用静态块来初始化类的静态成员
[可以避开构造器的调用 即 在不创建对象的情况下 完成类静态成员的初始化工作]