1.局部代码块
局部代码块位于方法中,每个方法中可以有多个局部方法块,按顺序执行,方法块中定义的变量作用范围只在当前代码块。
2.成员代码块
成员代码块位于类中,每个类中可以存在多个成员代码块,按顺序执行,执行顺序优先于构造方法,并且每new一次对象都会执行一次成员代码块。
成员代码块可以对类的属性初始化,但使用率较低。
3.静态代码块
静态代码块位于类中,每个类中可以存在多个静态代码块,按顺序执行,在第一次加载类的时候执行,只执行一次。
静态代码块用来给静态变量初始化,执行一些全局性的初始化操作。
4.关于属性赋值顺序
1、默认初始化
2、显示初始化(或成员代码块初始化),决定两者的位置,谁在上谁先执行
3、构造方法初始化
4、方法中对对象的属性进行修改
下面看代码
public class Block {
{
System.out.println("block 1");
}
public Block(){
System.out.println("构造方法");
}
static{
System.out.println("static block 1");
}
{
System.out.println("block 2");
}
public static void main(String[] args) {
{
System.out.println("method block 1");
}
new Block();
System.out.println("===============");
new Block();
{
System.out.println("method block 2");
}
}
static{
System.out.println("static block 2");
}
}
执行结果
static block 1
static block 2
method block 1
block 1
block 2
构造方法
===============
block 1
block 2
构造方法
method block 2