java代码块分为四类:普通代码块限于局部作用域;构造代码块在每次创建对象时执行,先于构造器;静态代码块在类加载时执行一次;同步代码块用于多线程临界区保护。

Java代码块本质是用花括号 {} 包裹的一段可执行逻辑,它不是方法、没有名字和参数,由JVM在特定时机自动触发。理解四类代码块的定位、执行顺序和适用场景,比死记语法更重要。
普通代码块(局部作用域控制)
写在方法、循环或if语句内部,不加任何修饰符。主要作用是限制变量生命周期,避免命名冲突。
- 变量只在该代码块内可见,离开大括号即失效
- 适合临时组织逻辑,比如同一方法中多次使用同名变量但含义不同
- 现代开发中内存压力小,实际使用频率低,了解即可
构造代码块(实例初始化统一入口)
定义在类中、方法外,无static修饰。每次创建对象时都会执行,且先于构造器运行。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 用于抽取多个构造器共有的初始化操作,比如设置默认值、打印日志、资源预加载
- 一个类可定义多个,按源码中出现顺序依次执行
- 不能访问
final字段(除非已明确赋值),也不能抛出受检异常
静态代码块(类级别一次性初始化)
用static修饰,也位于类体中。仅在类首次被加载时执行一次,早于所有构造代码块。
- 典型用途:初始化静态常量、注册驱动、读取配置文件、预热缓存
- 多个静态代码块按定义顺序执行,与静态字段初始化混排时,顺序一致
- 不可访问非静态成员,也不能使用
this或super
同步代码块(多线程临界区保护)
以synchronized(锁对象)开头,包裹需要线程安全的代码段。
- 解决共享数据并发修改问题,比同步方法更细粒度、更灵活
- 锁对象可以是任意引用类型,常用
this、类.class或专用锁对象 - 注意避免锁竞争过度或死锁,尤其在嵌套同步块中
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










