news 2026/5/1 11:43:45

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/5/1 9:51:37

MCP和FastMCP的使用

一、基础概念 1.mcp是什么 模型上下文协议,实现LLM应用与外部数据源和工具之间的无缝集成 2.mcp消息交换协议 JSON-RPC 2.0 好处:使用JSON作为数据格式,兼容各种编程语言、简单易用、轻量灵活 3.通信模式 (1)STDIO 模式 STDIO是一种基于标准输入(stdin)和标准输出(std…

作者头像 李华
网站建设 2026/5/1 5:49:04

Java遇上AI:JBoltAI框架让智能开发更简单

在科技飞速发展的今天,人工智能(AI)已经渗透到我们生活的方方面面。而对于广大的Java开发者来说,如何利用自己熟悉的Java语言,搭上AI这趟快车,成为了一个值得探讨的话题。今天,我们就来聊聊JBol…

作者头像 李华
网站建设 2026/5/1 8:15:03

Django+vue音乐热度数据分析及音乐推荐系统

标题:Djangovue音乐热度数据分析及音乐推荐系统文档介绍:绪论1.1研究背景与意义在数字化时代,音乐作为一种重要的文化娱乐形式,已经渗透到人们生活的方方面面。随着网络技术的快速发展,音乐资源日益丰富,音…

作者头像 李华
网站建设 2026/5/1 4:53:24

火山引擎记忆库Memo发布

火山引擎记忆库Memo(官方名称为火山引擎记忆库 Mem0)已于2026年2月2日正式发布,这是火山引擎推出的AI应用记忆系统托管服务,旨在为智能应用提供长期记忆能力,解决大模型"上下文窗口局限"和"会话记忆清零…

作者头像 李华
网站建设 2026/5/1 4:53:00

数据库性能优化

一、优化核心思路:分层递进策略优化层次优化手段预期收益实施难度SQL与索引​慢查询分析、索引优化性能提升50%-90%低(见效快)架构设计​分库分表、读写分离提升数倍至数十倍中(需改造)参数配置​内存分配、连接池调优…

作者头像 李华