在java中,类是
按需加载
的,只有当用到这个类时,JVM才会加载这个类,并且只会加载一次。
1.概念
根据其声明的位置分为:
- 静态代码块:由static修饰的代码块,对象实例化时只执行一次
- 构造代码块:对象实例化一次就执行一次
- 构造方法:这个应该都知道吧。。。
另外还有两类代码块,局部代码块和同步代码块,和本题目无关,暂不说明。
2.执行顺序
public class Buildingblocks {
public Buildingblocks(){
System.out.println("4父类无参构造方法");
}
//构造代码块
{
System.out.println("3父类构造代码块优");
}
//静态代码块
static {
System.out.println("1父类静态代码块");
}
}
public class ChildClass extends Buildingblocks {
public ChildClass() {
System.out.println("7我是子类无参构造方法");
}
static {
System.out.println("2我是子类的静态代码块");
}
{
System.out.println("6我是子类的构造代码块");
}
}
public class CodeBlock {
public static void main(String[] args) {
ChildClass childClass=new ChildClass();
}
}
//打印结果
1父类静态代码块
2我是子类的静态代码块
3父类构造代码块优
4父类无参构造方法
6我是子类的构造代码块
7我是子类无参构造方法
3.JVM加载顺序
暂时留到复习JVM时写。。。
构造代码块的作用:
可以将多个构造方法中的共同代码放到构造代码块中
。