news 2026/4/23 10:11:23

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/23 10:11:12

一番赏盲盒小程序前端功能:层级乐趣与便捷服务的双向赋能

一番赏盲盒小程序以层级化奖项体系为核心特色,凭借细腻的前端功能设计,精准还原线下抽赏的递进式惊喜,同时嫁接线上操作的高效便捷。在弱化营销属性的基础上,串联起赏系浏览、抽赏互动、权益兑现及收藏管理的全流程,以…

作者头像 李华
网站建设 2026/4/18 10:39:47

LINE收不到验证码?可能原因和解决方法

在LINE的使用过程中,有时在验证环节会碰到接收不到手机验证码的情况。可以参考本文排查原因、解决验证问题。一、LINE收不到验证码的可能原因1.虚拟号码如果使用的是非实名的、安全性不高的低质虚拟号码,可能会被平台阻止。2.号码被封如果之前在账号使用…

作者头像 李华
网站建设 2026/4/8 12:15:52

吃透分布式与微服务:3分钟分清区别,再也不怕面试被问!

在后端架构演进过程中,“分布式”和“微服务”是两个高频出现且极易混淆的概念。很多开发者入门时会有疑问:两者是不是一回事?微服务就是分布式吗?分布式一定是微服务吗?其实答案很明确:微服务是分布式架构…

作者头像 李华
网站建设 2026/4/18 4:06:58

NodeJs从入门到上天:什么是Node.js

一:概念 1:概念 node.js是一个JavaScript运行时环境,使用者可以搭建服务器端的JavaScript程序。 2:作用 作用: 1:使用Node.js编写服务器端程序。编写数据接口,提供网页资源浏览功能等等 2:前端…

作者头像 李华
网站建设 2026/4/17 23:41:16

56页精品PPT | 企业智能工厂建设整体解决方案

制药企业面临多重挑战。监管要求日趋严格,GMP合规压力大。传统车间设备孤立运行,数据无法互通。生产记录依靠人工,质量追溯困难。仓储作业效率低,库存状态不透明。供应链协同不足,采购与生产计划脱节。这些问题制约企业…

作者头像 李华
网站建设 2026/4/23 0:58:43

SLO 玩明白,Timeline 用到位,系统优化稳了!

一、SLO 核心详解 1. 定义:服务等级目标,量化系统的承诺 SLO(Service Level Objective)是服务提供者对服务可用性、性能等核心指标的量化承诺,是SLA(服务等级协议)的核心支撑,也是…

作者头像 李华