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
静态代码块
构造代码块...
空参构造...
构造代码块...
有参构造...