●代码块
1.构造代码块:类中方法外{}
构造代码块在构造函数之前执行
每次创建对象时都会执行
构造代码块就是给属性进行初始化
{
this.name="lili";
this.gender='女';
this.age=1;
System.out.println("构造代码块");
}
2.局部代码块:类中方法内{}
用于限定某些变量的生命周期
定义完一个局部变量a后,在接下来的代码中不想在用时,就没有必要让a在内存中继续占用内存,就可以使用局部代码块。
public void test(){
{
int a=3;
System.out.println("局部代码块");
}
}
3.静态代码块:static{}
静态代码块存储在方法区中
静态代码块针对的是类,对类进行初始化,也可以叫类代码块
静态代码块随着类的加载而加载到方法区,在类创建对象或执行方法前执行,而且只执行一次
static{
System.out.println("静态代码块");
}
三个代码块的执行顺序:
a.第一个类加载,执行第一个类的静态代码块
b.第一个类中包含第二个类作为第一个类的属性(注意是否有new)
new:第二个类加载,执行第二个类的静态代码块
执行第二类的类代码块
执行第二类的构造方法
不new:不加载第二各类
c.执行第一个类的类代码块(注意c和b的顺序)
b在c前:执行的顺序是a->b->c->d
c在b前:执行的顺序是a->c->b->d
d.执行第一个类的构造函数