Java构造代码块和静态代码块

1. 构造代码块

  • 构造方法块 : 用一对大括号表示, 定义在类中方法外
  • 执行时机 : 每次构造方法执行前, 都会执行构造代码块
  • 作用 : 抽取构造方法中共性内容
public class Student {
    static {
        System.out.println("静态代码块");
    }
    final int NUM;
    {
        NUM=10;
        System.out.println("构造代码块...");
    }
    public Student(){
        System.out.println("空参构造...");
    }
    public Student(int a){
        System.out.println("有参构造...");
    }
}
public class StudentTest {
    public static void main(String[] args) {
        Student s = new Student();
        Student s1=new Student(10);
    }
}

运行后,构造函数执行了两次,构造代码块也执行了两次

2. 静态代码块

  • 静态代码块 : 在一对大括号前加上static关键字 , 定义在类中方法外
  • 执行时机 : 随着类的加载而加载 , 只加载一次
  • 作用 : 一般用于给静态成员初始化
public class Student {
    static {
        System.out.println("静态代码块");
    }
    final int NUM;
    {
        NUM=10;
        System.out.println("构造代码块...");
    }
    public Student(){
        System.out.println("空参构造...");
    }
    public Student(int a){
        System.out.println("有参构造...");
    }
}

/*
  静态代码块 :
      1 定义的位置 : 在一对大括号前加上static , 定义在类中方法外
      2 执行时机 ; 随着类的加载而执行, 只加载一次
      3 可以给类中的静态成员进行初始化数据
 */
public class Test {
    public static void main(String[] args) {
        new Student();
        new Student(10);
    }
}

运行程序后,可看以静态代码块只执行了一次

D:\jdk17\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2021.3.3\lib\idea_rt.jar=51288:D:\IntelliJ IDEA 2021.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\Linuxshare\StartJava\out\production\StartJava;E:\Linuxshare\StartJava\lib\jl-1.0.1.jar com.itheima.code_block.static_demo.Test
静态代码块
构造代码块...
空参构造...
构造代码块...
有参构造...

你可能感兴趣的:(Java,java)