Loading... # 基本介绍 > 基本语法 ```java [修饰符]{ 代码 }; ``` > 说明注意: 1) 修饰符可选,要写的话,也只能写static 2) 代码块分为两类,使用static 修饰的叫静态代码块,没有static修饰的,叫普通代码块/非静态代码块。 3) 逻辑语句可以为任何逻辑语句(输入、输出、方法调用、循环、判断等) 4) `;`号可以写上,也可以省略。 - 代码块里变量属于局部变量,只在自己所在区域(前后的 {})内有效。 - 根据代码块定义的位置的不同,分成三种形式: - 局部代码块:直接定义在方法内部的代码块,如条件执行体、循环体 - 普通初始化块(构造代码块):直接定义在类中(一般不用) - 用于对同一个类的所有对象执行**相同的**初始化操作 - 在每次创建对象时隐式执行,而且在执行构造器**之前**执行 - 假象,编译后,初始化块中代码会被“还原”到每个构造器中,且位于构造器所有代码的**前面** - 静态初始化块 / 类初始化块:初始化块的修饰符只能是 static,使用 static 修饰的初始化块,通常用来对 类变量 做初始化操作、加载资源、加载配置文件等 - **随着所在类的加载而执行**(只执行一次) - 在**同类**中优先于 main 方法执行 ```java class CodeBlockDemo { private static CodeBlockDemo demo = new CodeBlockDemo(); static { System.out.println("静态初始化"); } CodeBlockDemo() { // 编译后,“还原”到这里 System.out.println("普通初始化块"); System.out.println("构造器..."); } { System.out.println("普通初始化块"); } public static void main(String[] args) { System.out.println("进入 main 方法"); new CodeBlockDemo(); new CodeBlockDemo(); } } /* * 普通初始化块 * 构造器... * 静态初始化 * 进入 main 方法 * 普通初始化块 * 构造器... * 普通初始化块 * 构造器... */ ``` ## 代码执行顺序 **父类静态代码块 -> 子类静态代码块 -> 父类非静态代码块 -> 父类稳造方法 -> 子类非静态代码块 -> 子类构造方法** - 类变量的初始化 及 静态初始化块(执行顺序与它们在源代码中的排列顺序相同) - 实例变量的初始化 及 普通初始化块(执行顺序与它们在源代码中的排列顺序相同) - 构造器(先加载父类的字节码文件并调用父类的构造器) - main 方法 最后修改:2022 年 07 月 30 日 © 允许规范转载 打赏 赞赏作者 赞 如果觉得我的文章对你有用,请随意赞赏