java代码块分为静态、构造和局部三类:静态代码块在类加载时执行一次,用于全局初始化;构造代码块每次创建对象时执行,用于共用初始化逻辑;局部代码块限定变量作用域,无运行期开销。

Java代码块不是语法糖,而是有明确执行时机和作用域的结构。真正需要掌握的是静态代码块、构造代码块、局部代码块这三类——同步代码块属于多线程范畴,不在基础初始化逻辑主线内。
静态代码块:类加载时只执行一次
用static {}定义,位于类体中、方法外。它在类第一次被加载进JVM时触发,且全程仅运行一次,早于任何对象创建,也早于构造代码块和构造方法。
- 适合做全局性初始化,比如读取配置文件、初始化静态常量、注册驱动等
- 不能访问非静态成员(因为此时实例还不存在)
- 多个静态代码块按书写顺序依次执行
- 即使后续没创建对象,只要类被引用(如调用静态方法、访问静态字段),它就已执行
构造代码块:每次new对象时都执行
用{}(无static)定义,同样在类体中、方法外。它不属于任何方法,也不是构造方法,但会在每次调用构造方法前自动运行。
- 作用是抽取所有构造方法共有的初始化逻辑,避免重复写在每个构造器里
- 多个构造代码块按出现顺序执行,全部执行完才进入构造方法体
- 可以访问实例变量和静态变量,也能调用实例方法(但此时对象尚未完全构建完毕,需谨慎)
- 比构造方法更“靠前”,但比静态代码块更“靠后”
局部代码块:限制变量作用域的小括号
写在方法、循环、条件语句内部的{},不带修饰符。它的存在意义不是执行逻辑,而是控制变量生命周期。
- 大括号内声明的变量只在该块内有效,离开即销毁,防止命名冲突
- 常见于临时计算、资源预处理或调试输出等短生命周期场景
- 编译器会将其内联优化,运行期无额外开销,纯属编译期作用域管理手段
- 现代Java开发中使用频率较低,更多靠提取方法或使用var+作用域清晰的结构替代
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











