@自己 | 那些年困惑的代码块

代码块是一个独立的数据体,用于实现特定的算法,必须需要运行主体,否则不能单独运行;下面具体来分析代码块中的常见问题;

一、四种代码块####

  • 普通代码块
    普通代码块必须紧跟在方法名的后面,也必须由方法名具体调用;
  • 同步代码块
    用关键字synchronized修饰,保证同一时间仅有一个线程实现访问;
  • 静态代码块
    用关键字static修饰,用于初始化静态变量 ;
  • 构造代码块
    编译器会将代码块按照它们的顺序插入到所有构造函数的前端,每个构造函数执行时均会调用构造代码;注意构造代码块不是在构造函数之前运行,而是依托构造函数运行;

二、静态代码块、构造代码块和构造函数的执行顺序####

public class Code {
    
    private String codeAuthor;
    private String codeStyle;
    private static int codeLines;
    // 用于初始化静态变量
    static{
        codeLines = 111;
        System.out.println("静态代码块初始化");
    }
    
    public Code(){
        System.out.println("无参构造函数"+codeLines);
    }
    
    public Code(String codeStyle){
        this.codeStyle = codeStyle;
        System.out.println("有参构造函数"+codeStyle+codeLines);
    }
    // 用于在构造函数前执行,初始化实例变量
    {
        codeAuthor = "CaiFeng";
        System.out.println("构造代码块"+codeLines);
    }
    
    public static void main(String[] args) {
        Code c = new Code();
        Code c1 = new Code("casual");
    }
}
// 代码打印结果
静态代码块初始化
构造代码块111
无参构造函数111
构造代码块111
有参构造函数casual111
  • 静态代码块 > 代码块 > 构造函数

无数优秀的学长学姐强调基础的重要性,在Java进阶的道路上,砥砺前行。欲知后事如何,且听下回分解。

你可能感兴趣的:(@自己 | 那些年困惑的代码块)