java 代码块

150 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情

代码块

构造代码块

  • 构造代码块:

    • 位置:定义在成员位置的代码块{}
    • 执行:每次创建对象都会执行构造代码块
    • 作用:一般是一个类的多个构造方法重复的代码放到构造代码块中
    • 使用场景:

    举例:统计当前类一共创建了几个对象

public class Teacher {
    String name;
    int age;
​
    //定义计数器
    static int count = 0;
    //构造代码块
    //构造代码块会在构造方法之前执行,并且每次执行构造方法都会先执行构造代码块
    {
        System.out.println("构造代码块");
        //统计
        count++;
    }
​
    //无参构造
    public Teacher(){
        System.out.println("构造方法");
    }
    //有参构造
    public Teacher(String name, int age){
        this.name = name;
        this.age = age;
    }
}
​
public class Demo02 {
    public static void main(String[] args) {
​
        //创建对象
        Teacher t1 = new Teacher();
        Teacher t2 = new Teacher();
        Teacher t3 = new Teacher("柳岩",35);
        System.out.println("一共创建过" + Teacher.count +"次");
    }
}

静态代码块(掌握)

  • 静态代码块

    • 格式:

        //静态代码块
          static{
             
          }
      
    • 位置:定义在成员位置,类中方法外。

    • 执行:在当前类第一次被使用时,静态代码块会执行。并且静态代码块只会执行一次。

    • 使用场景:比如我们加载驱动(驱动需要在第一次使用前加载,只需要加载一次),这种功能就可以放在静态代码块中。

格式:

public class Person {
    private String name;
    private int age;
 //静态代码块
    static{
        System.out.println("静态代码块执行了");
    }
}

局部代码块

  • 格式:
定义在方法中:
//局部代码块
{
    
}
public class Demo03 {
    public static void main(String[] args) {
        int a = 10;
        //局部代码块
        //局部代码块的作用就是限制变量的作用域
        {
           int b = 20;
        }
​
        //int a = 30;    //在同一个区域不能定义重名变量
        //不报错,因为作用域不同
        int b = 40;
    }
}

执行顺序演示

public class AAA {
    //静态代码块
    //静态代码块只会执行一次 并在最开始第一个执行
    static{
        System.out.println(2);
    }
    //构造代码块
    //在每次执行构造方法之前先执行构造代码块
    {
        System.out.println(3);
    }
    //构造方法
    public AAA() {
        System.out.println(1);
    }
   
}
​
public class Demo04{
    public static void main(String[] args) {
        //创建对象
        AAA a1 = new AAA();
        AAA a2 = new AAA();
    }
}
​
执行结果:    2 3 1 3 1