Java代码块分为局部、构造、静态三类:局部代码块在方法调用时每次执行,限定变量作用域;构造代码块在每次对象创建时执行,位于构造方法前;静态代码块在类加载时仅执行一次,用于初始化静态资源。

Java里用大括号 {} 包裹的代码段统称“代码块”,按位置和修饰符不同,分为局部、构造、静态三类。它们不依附于方法或构造器,各自在特定时机自动执行,生命周期互不重叠——弄清谁先谁后、谁只跑一次、谁随对象而生,是理解Java初始化流程的关键。
局部代码块:控制变量作用域,每次进方法就执行
写在方法内部任意位置,仅用于划出一个独立作用域。变量在块内声明,块结束即销毁,不参与对象或类的生命周期管理。
- 作用明确:限制变量可见范围,避免命名冲突,让内存尽早释放
- 执行频率高:每次调用该方法,块内代码都会运行一遍
- 注意细节:同名变量在嵌套块中可遮蔽外层变量,但彼此完全隔离
{ int x = 10; { int x = 20; System.out.print(x + " "); } System.out.println(x); } // 输出:20 10
构造代码块:对象初始化的统一入口,每次new都执行
定义在类中、方法外,无static修饰。它不是构造方法,却总在每个构造方法体执行前自动运行,适合抽取多个构造器共用的初始化逻辑。
- 执行时机固定:每创建一个对象,它就执行一次,且严格早于对应构造方法
- 不能访问静态成员以外的静态内容,但可操作实例变量和方法
- 若类有多个构造器,构造代码块能避免重复代码,提升可维护性
静态代码块:类加载时一次性初始化,全程只跑一次
用static{}定义,属于类级别。JVM加载类到方法区时触发,之后无论创建多少对象、调用多少次方法,它都不会再执行。
立即学习“Java免费学习笔记(深入)”;
- 典型用途:读取配置文件、注册驱动、初始化静态常量、建立连接池等耗资源但只需一次的操作
- 不能直接访问非静态成员(因为此时还没有任何对象)
- 若有继承关系,父类静态块先于子类静态块执行;多个静态块按书写顺序依次执行
三类代码块共同构成Java对象从类加载到实例诞生的完整准备链。记住优先级:静态代码块 → 构造代码块 → 构造方法 → 局部代码块(方法内)。顺序不对,初始化逻辑就容易出错。


















