BLOCK 块
block 块
{} ->块 自成作用域
{}:方法中|语句块中->局部代码块|普通语句块 执行时机 : 跟随方法的调用
{}:类中方法外部->构造块 执行时机 : 创建对象new的时候
static{}:类中方法外->静态块 执行时机 : 类第一次加载完成之后初始化执行
注意:
构造块代码先于构造器代码之前执行
当存在多个构造块,从上到下一次执行
多个静态块,从上到下一次执行
静态块在类第一次加载完成之后执行,并且只执行一次
应用场景:
静态块: 内容的初始化,根据静态块的特点,类加载后只执行一次
为静态变量内容初始化
构造块:
成员变量内容做初始化
局部代码块:
可以把具有相同作用的代码放在一个{}中,具有语义化的特点,也代表一个作用域
注意 : 顺序: 静态块–main–构造块–构造器
public class BlockDemo01 {
//类中方法外
static int i ;
int x = 15;
//构造器
public BlockDemo01(){
System.out.println("空构造");
}
//构造块
{
System.out.println("我是构造块1哈哈哈哈");
}
{
System.out.println("我是构造块2哈哈哈哈");
//System.out.println(this.x);
}
{
System.out.println("我是构造块3哈哈哈哈");
}
//静态块
static{
i = 10;
System.out.println("静态块1");
}
static{
System.out.println("静态块2");
//System.out.println(new BlockDemo01().x);
}
public static void main(String[] args) {
System.out.println("main");
//局部
int i =1;
// 局部代码块|普通语句块W
{
i =5;
System.out.println(i);
}
System.out.println(i);
System.out.println(BlockDemo01.i);
new BlockDemo01();
new BlockDemo01();
}
}