Java代码块不是语法糖,而是具有明确执行时机和作用域边界的结构:局部代码块控制变量生命周期;构造代码块在每次new对象时、构造方法前执行;静态代码块在类加载时执行一次;同步代码块用于多线程临界区加锁。

Java中的代码块不是语法糖,而是有明确执行时机和作用域边界的结构。理解它们的关键,在于区分“谁来执行”“何时执行”“影响什么”。
局部代码块:控制变量生命周期
写在方法内部的{ }就是局部代码块,它的核心价值是限制变量作用域。变量一旦定义在该块内,离开花括号就不可访问,避免命名冲突或误用。
- 常用于if、for等语句中,让临时变量“用完即弃”
- 多个同名变量可在不同块中安全共存,比如一个块里int x = 10,另一个块里int x = 20,互不影响
- 不带任何修饰符,也不参与类初始化流程
构造代码块(实例初始化块):统一对象初始化逻辑
写在类里、没加static的{ },每次new对象时都会执行,且在构造方法之前运行。适合抽取多个构造器共用的初始化代码。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 多个构造代码块按源码顺序依次执行
- 可访问实例变量和实例方法,但不能直接调用this()或super()
- 比构造方法更早执行,因此能为构造方法提供预设状态
静态代码块:类加载时一次性初始化
用static { }定义,只在类第一次被JVM加载时执行一次。它是初始化静态成员、加载驱动、读取配置等操作的首选位置。
立即学习“Java免费学习笔记(深入)”;
- 执行早于所有构造代码块和构造方法
- 只能访问静态成员,不能使用this或非静态字段
- 多个静态块也按出现顺序执行,适合分步初始化复杂静态资源
同步代码块:保障多线程下的临界区安全
用synchronized(object) { }包裹,用于对共享资源加锁。它不改变执行时机,只控制并发访问行为。
- 锁对象可以是任意引用,常用this或专门的private final Object lock = new Object()
- 相比同步方法,粒度更细,只锁定关键段,提升并发性能
- 必须出现在方法内部,不能独立存在于类层级

















