普通代码块:在方法中出现的{}就称为普通代码块,执行顺序从上到下;
静态代码块:在虚拟机加载类的时候就会顺序执行,而且只执行一次;
构造代码块:直接在类中定义且没有加static关键字的代码块称为构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数,执行顺序从上到下。
public class Demo {
{
System.out.println("构造代码块1");
}
{
System.out.println("构造代码块2");
}
{
System.out.println("构造代码块3");
}
static {
System.out.println("静态代码块1");
}
static {
System.out.println("静态代码块2");
}
public Demo() {
System.out.println("无参构造函数");
}
public Demo(int i) {
System.out.println("有参构造函数,参数为" + i);
}
public static void main(String[] args) {
new Demo();
new Demo(10);
{
System.out.println("普通代码块1");
}
{
System.out.println("普通代码块2");
}
}
}
执行结果
静态代码块1
静态代码块2
构造代码块1
构造代码块2
构造代码块3
无参构造函数
构造代码块1
构造代码块2
构造代码块3
有参构造函数,参数为10
普通代码块1
普通代码块2