在Java中,一共存在4种代码块。
1、普通代码块(局部代码块)
出现在方法中,用于限定变量的生命周期。
2、构造代码块
在类中定于,位于类的成员位置,用{ }括起来。在调用构造方法前执行。
可以把多个构造方法中的共同代码放到构造代码块中,对对象进行初始化。
3、静态代码块
在类中定于,位于类的成员位置,用{ }括起来,用static修饰。一般用来对类进行初始化。
静态代码块优于构造方法执行。在类加载时执行,只执行一次。
4、同步代码块
同步代码块主要出现在多线程中。
比较静态代码块、构造代码块和构造方法的执行顺序:
public class CodeBolckTest {
public static void main(String[] args) {
//普通代码块(局部代码块)
{
System.out.println("普通代码块");
}
System.out.println("----------");
Person A = new Person();
System.out.println("----------");
Person B = new Person();
System.out.println("----------");
}
}
class Person {
public Person() {
System.out.println("构造方法");
}
{
System.out.println("构造代码块");
}
static {
System.out.println("静态代码块");
}
}
结果:
普通代码块
----------
静态代码块
构造代码块
构造方法
----------
构造代码块
构造方法
----------
加载过程:
加载类CodeBolckTest:
- 加载main()方法;
- 按顺序执行main中代码,先执行main中的普通代码块。
加载类Person
- 执行类中静态代码块(只执行一次);
- 执行构造代码块(执行次数与对象实例个数有关);
- 执行构造方法(执行次数与对象实例个数有关)。