前言
在学习java过程中,有一个关键的知识点是绕不开的,那就是:类中成员的加载顺序。本文主要讲解的是静态代码块、构造代码块及构造方法的加载顺序。
概念
构造代码块:定义在类的成员位置上,使用"{}"括起来的代码。
静态代码块:定义在类的成员位置上,使用"{}"括起来的代码,只是多了一个static修饰。
构造方法:这个不多说了,码农们都知道。
案例
public class SuperTest {
static {
System.out.println("SuperTest--->静态代码块");
}
{
System.out.println("SuperTest--->构造代码块");
}
public SuperTest() {
System.out.println("SuperTest--->构造方法");
}
}
public class SubTest extends SuperTest{
static {
System.out.println("SubTest--->静态代码块1");
}
static {
System.out.println("SubTest--->静态代码块2");
}
{
System.out.println("SubTest--->构造代码块1");
}
public SubTest() {
System.out.println("SubTest--->构造方法");
}
{
System.out.println("SubTest--->构造代码块2");
}
public static void main(String[] args) {
new SubTest();
new SubTest();
}
}
总结
1.构造方法执行之前,首先会去执行构造代码块,也就是说构造代码块是优于构造方法执行。
2.构造代码块的位置不受构造方法的影响。
3.多个构造代码块存在的时候,构造代码块执行的顺序是根据先后顺序来去执行。
4.构造代码块的作用:可以将多个构造方法中的共同代码放到构造代码块中。
5.静态代码块是类被加载的时候就会执行,静态代码块只会被执行一次。