在Java中,使用 { } 括起来的代码被称为代码块(Code block)
根据其位置和声明关键字的不同,可以分为:局部代码块,构造代码块,静态代码块和同步代码块。
1. 局部代码块
作用:提前结束变量的生命周期
public class Demo {
public static void main(String[] args) {
{
int a = 10;
}
// 变量 a 已销毁,因此下面的打印会报错
System.out.println(a);
}
}
2. 构造代码块
作用:可以把构造方法中重复的代码提取出来
执行时间:在创建本类对象时会先执行构造代码块再执行构造方法
public class Demo {
public static void main(String[] args) {
Student stu1 = new Student();
Student stu2 = new Student("goliath", 20);
}
}
class Student {
private String name;
private int age;
// 构造代码块
{
System.out.println("构造代码块");
}
public Student() {
System.out.println("空参构造");
}
public Student(String name, int age) {
System.out.println("有参构造");
this.name = name;
this.age = age;
}
}
3. 静态代码块
作用:一般用于对象的初始化
执行时间:随着类的加载而加载,并且只执行一次
public class Demo {
public static void main(String[] args) {
Student stu1 = new Student();
Student stu2 = new Student("goliath", 20);
}
}
class Student {
private String name;
private int age;
// 静态代码块
static {
System.out.println("构造代码块");
}
public Student() {
System.out.println("空参构造");
}
public Student(String name, int age) {
System.out.println("有参构造");
this.name = name;
this.age = age;
}
}
4. 同步代码块
描述::用 synchronized 关键字修饰,用于实现线程同步,同一时刻只能有一个线程进入同步代码块执行。