news 2026/4/15 16:47:00

Java中的代码块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中的代码块

在Java中,代码块是用一对花括号{}包裹起来的一段代码,根据其位置和用途不同,Java中主要有以下4中类型的代码块

1.普通代码块

1.定义:

写在方法内部{ }的代码,用于限定变量作用域或逻辑分组

2.特点:

  • 只能在方法、构造器或初始化块中使用
  • 用于提高可读性,限制变量生命周期

如:

public void demo() { { int x = 10; System.out.println(x); } // x 的作用域到此结束 // System.out.println(x); // 编译错误:x 未定义 }

注:普通代码块很少单独使用,通常配合if、else等控制结构

2.构造代码块

1.定义

直接写在类体(不在方法内),没有static修饰的{ }块

2.特点

  • 每次创建对象时都会执行(且在构造器之前执行)
  • 多个构造代码块按从上到下的顺序执行
  • 构造代码块的作用:用于多个构造器共享的初始化逻辑

如:

public class Student { { System.out.println("构造代码块执行!"); } public Student() { System.out.println("无参构造器"); } public Student(String name) { System.out.println("有参构造器: " + name); } } // 测试 new Student(); // 输出: // 构造代码块执行! // 无参构造器

注:构造代码块在继承中的执行顺序:父类构造代码块 → 父类构造器 → 子类构造代码块 → 子类构造器

3.静态代码块

1.定义

用static修饰的{ }块,写在类体中

2.特点

  • 类加载时执行一次(JVM第一次使用该类时)
  • 用于初始化静态资源(如数据库连接、配置加载)
  • 多个静态代码块按从上到下的顺序执行

如:

public class DatabaseUtil { static { System.out.println("加载数据库驱动..."); // Class.forName("com.mysql.jdbc.Driver"); } static { System.out.println("读取配置文件..."); } } // 第一次使用该类时(如调用静态方法、创建对象等): DatabaseUtil.someMethod(); // 输出: // 加载数据库驱动... // 读取配置文件...

注:静态代码块只执行一次,且早于任何对象创建就执行

4.同步代码块

1.定义

用synchroinzed(对象) 包裹的{ }块,用于线程同步

2.特点

  • 锁定指定对象,保证线程安全
  • 比synchroized方法更灵活(可细粒度控制)
public class Counter { private int count = 0; private final Object lock = new Object(); public void increment() { synchronized (lock) { count++; // 线程安全 } } }

注:同步代码块是并发编程的核心工具之一

5.四种代码块对比总结

类型语法执行时机用途
普通代码块{ ... }方法调用时限定变量作用域
构造代码块{ ... }每次new对象时(构造器前)共享实例初始化逻辑
静态代码块static { ... }类加载时(仅一次)初始化静态资源
同步代码块synchronized(obj) { ... }线程进入时线程同步

6.重要补充:执行顺序(当它们共存时)

public class Test { static { System.out.println("1. 静态代码块"); } { System.out.println("2. 构造代码块"); } public Test() { System.out.println("3. 构造器"); } public static void main(String[] args) { new Test(); new Test(); } }

输出:

1. 静态代码块 2. 构造代码块 3. 构造器 2. 构造代码块 3. 构造器
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 21:07:31

填志愿/选方向必看!计算机18大专业的终极选择攻略

一次搞懂计算机类18个本科专业方向的区别,谁是“宝藏”谁是“天坑”? 随着科技进步的日新月异,互联网在日常生活中所扮演的角色越来越重要。数字化、信息化的时代里,计算机类专业无疑是当今高考最热门且最具发展前景的志愿填报方…

作者头像 李华
网站建设 2026/4/12 6:31:03

ABP框架07.在 DDD中把查询作为可演进的契约

数据查询进阶(上)&#xff1a;作者热度榜报表与 Dapper 的“可控查询” 哈喽&#xff0c;我是黑棠 在CRUD中&#xff0c;通用仓储 IRepository<T> EF Core 的查询表达式&#xff0c;足以覆盖列表、详情、简单筛选。 但在“报表类查询”里&#xff0c;常见的痛点不是写不…

作者头像 李华
网站建设 2026/4/13 20:44:14

孤能子视角:“智慧物流“

第一步&#xff1a;分析“作者”——智慧物流体系&#xff08;作为“供应链生命共同体”的超级孤能子&#xff09;启动&#xff1a;三力逼问&#xff0c;定位张力1. 零预设&#xff1a;不预设智慧物流是“运输自动化”或“信息化”&#xff0c;视其为全球贸易与数字技术双重浪潮…

作者头像 李华
网站建设 2026/4/9 22:09:43

别再用老话术!工厂老板吃这套沟通技巧

"我们质量好、价格优、服务到位",这类话术啊,工厂老板早就听腻了&#xff0c;他每天都被无数销售包围着,真正能让他愿意停下脚步的,不是你的产品有多厉害,而是你懂他的生意、能帮他算清账、还能解决他的难题。一、开口不谈"我",先说"你不好的话术: &q…

作者头像 李华
网站建设 2026/4/8 23:34:36

制造大数据应用在哪些工业场景中最值得推荐?

一家汽车焊装车间里&#xff0c;报警灯突然闪烁。某条焊缝的电阻值比历史平均值偏了0.3欧姆——这数字大多数人压根看不懂&#xff0c;系统却已经推送了三套方案&#xff1a;调焊枪压力、换电极帽、查夹具磨损。工程师没打电话&#xff0c;也没翻手册&#xff0c;只是在手机上敲…

作者头像 李华