(1)静态代码块: 定义在成员位置,使用static修饰的代码块
特点:当以任意形式第一次使用到该类时执行。该类不管创建多少对象,静态代码块只执行一次。可以用于给静态变量赋值,给类进行初始化。
(2)构造代码块: 定义在类中成员位置的代码块
特点:优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作,没创建一个对象就会执行一次构造代码块。
(3)局部代码块: 定义在方法或语句中
特点:以"{}"划定的代码区域,此时只需关注作用域的不同即可。
class Person{
//构造代码块(2)
{
System.out.println("2构造代码块QAQ");
}
//静态代码块(1首先执行)
static{
System.out.println("1静态代码块QWQ");
}
//构造函数(3)
Person(){
System.out.println("3构造方法AQA");
}
void show(){
int x=9;
//局部代码块(4)
{
System.out.println("4局部代码块QVQ");
}
}
}
class BlockDemo{
public static void main(String[] args){
Person p = new Person();
p.show();
Person p1 = new Person();
p1.show();
Person p2 = new Person();
p2.show();
}
}
测试结果:
可以看到,不管new多少次,静态代码块始终最先执行并且只执行一次。