Java代码块按执行顺序分为五类:1.静态代码块随类加载执行一次,初始化静态资源;2.实例代码块每次创建对象时在构造方法前执行,初始化实例共用逻辑;3.局部代码块限定变量作用域;4.同步代码块用于线程并发控制;5.执行顺序固定为静态→实例→构造→局部。

Java中的代码块是用一对大括号 {} 包裹的、独立于方法和构造器之外的一段可执行代码。它没有方法名、参数或返回值,由JVM在特定时机自动调用,主要用于初始化操作或控制作用域。
静态代码块
用 static 修饰,定义在类中、方法外。它随类加载而执行,且只执行一次,优先级最高。
- 适合初始化静态变量、加载驱动、读取配置等一次性准备工作
- 多个静态代码块按定义顺序依次执行
- 不能访问非静态成员(实例变量或方法),否则编译报错
实例代码块(构造代码块)
不加任何修饰符,直接写在类中、方法外。每次创建对象时都会执行,且一定在构造方法之前运行。
- 用于抽取多个构造器共有的初始化逻辑,避免重复代码
- 可以访问所有成员(静态和非静态)
- 多个实例代码块也按书写顺序依次执行
局部代码块(普通代码块)
定义在方法、构造器或语句内部,仅用于限定变量作用域。
立即学习“Java免费学习笔记(深入)”;
- 执行顺序与代码位置一致,先写先执行
- 常用来隔离同名变量,防止冲突,比如在同一个方法里多次定义 int x
- 变量出了 {} 就不可见,有助于内存及时释放
同步代码块(多线程场景)
用 synchronized 关键字包裹,配合锁对象使用,保证同一时刻只有一个线程能进入该代码段。
- 不是初始化用途,而是并发控制机制
- 不属于类加载或对象创建流程,不参与执行顺序比较
- 实际开发中常用于保护共享资源
执行顺序固定为:静态代码块 → 实例代码块 → 构造方法 → 局部代码块(按出现位置)。这个顺序在类首次加载、对象首次创建时就已确定,不复杂但容易忽略。










