当前位置: 首页 > news >正文

Java代码块

🧠 Java 代码块概述

在 Java 中,代码块(Code Block) 是用 {} 括起来的一段代码。根据其用途和执行时机的不同,可以分为以下几类:

  • 普通代码块
  • 构造代码块
  • 静态代码块
  • 同步代码块(多线程中使用)

1️⃣ 普通代码块(Local Code Block)

✅ 定义:

定义在方法内部的代码块,用于限制变量的作用域或组织逻辑。

⏱ 执行时机:

当程序运行到该代码块时执行。

🔁 特点:

  • 变量只在代码块内有效
  • 多次调用方法会多次执行

💡 示例代码:

public class Demo {public static void main(String[] args) {{int x = 10;System.out.println("x = " + x);}// System.out.println(x); // 编译错误:x不可见}
}

2️⃣ 构造代码块(Instance Initialization Block)

✅ 定义:

定义在类中、方法外的代码块,没有 static 关键字修饰。

⏱ 执行时机:

每次创建对象时,在调用构造函数之前执行。

🔁 特点:

  • 可以对对象进行统一初始化
  • 多个构造器共用,避免重复代码

💡 示例代码:

public class Person {{System.out.println("构造代码块执行");}public Person() {System.out.println("无参构造器执行");}public Person(String name) {System.out.println("带参构造器执行:" + name);}
}// 测试类
public class Test {public static void main(String[] args) {new Person();new Person("Tom");}
}

📌 输出结果:

构造代码块执行
无参构造器执行
构造代码块执行
带参构造器执行:Tom

3️⃣ 静态代码块(Static Initialization Block)

✅ 定义:

使用 static 修饰的代码块,定义在类中、方法外。

⏱ 执行时机:

在类第一次被加载时执行,且仅执行一次。

🔁 特点:

  • 用于类级别的初始化操作(如加载驱动、读取配置文件)
  • 先于构造代码块和构造器执行
  • 多个静态代码块按书写顺序执行

💡 示例代码:

public class Animal {static {System.out.println("静态代码块执行");}{System.out.println("构造代码块执行");}public Animal() {System.out.println("Animal构造器执行");}
}// 测试类
public class Test {public static void main(String[] args) {new Animal();new Animal(); // 第二次不会执行静态代码块}
}

📌 输出结果:

静态代码块执行
构造代码块执行
Animal构造器执行
构造代码块执行
Animal构造器执行

4️⃣ 同步代码块(Synchronized Block)

✅ 定义:

用于多线程环境下控制线程同步,防止多个线程同时访问共享资源。

💡 示例代码:

public class Counter {private int count = 0;public void increment() {synchronized (this) {count++;}}public int getCount() {return count;}
}// 多线程测试
public class Test {public static void main(String[] args) throws InterruptedException {Counter counter = new Counter();Thread t1 = new Thread(() -> {for (int i = 0; i < 1000; i++) {counter.increment();}});Thread t2 = new Thread(() -> {for (int i = 0; i < 1000; i++) {counter.increment();}});t1.start();t2.start();t1.join();t2.join();System.out.println("最终计数: " + counter.getCount());}
}

📌 输出结果:

最终计数: 2000

🔄 总结:各种代码块执行顺序

在一个类中,不同代码块的执行顺序如下:

  1. 静态代码块(类加载时执行,仅一次)
  2. 构造代码块(每次实例化前执行)
  3. 构造器(具体构造方法)
  4. 局部代码块(方法中定义,按顺序执行)

📝 应用场景建议

类型场景说明
普通代码块控制变量作用域、简化逻辑结构
构造代码块对象初始化,多个构造器复用代码
静态代码块加载驱动、配置文件、静态资源
同步代码块多线程下保证线程安全

✅ 小贴士

  • 一个类可以有多个静态代码块和构造代码块。
  • 静态代码块不能访问非静态成员。
  • 构造代码块可以访问静态和非静态成员。
  • 静态代码块 > 构造代码块 > 构造器
http://www.lryc.cn/news/584180.html

相关文章:

  • HTML应用指南:利用GET请求获取全国永辉超市门店位置信息
  • @RequestBody和@ResponseBody注解的作用
  • html的outline: none;
  • AI进化论06:连接主义的复兴——神经网络的“蛰伏”与“萌动”
  • 【性能测试】jmeter+Linux环境部署和分布式压测,一篇打通...
  • 【科研绘图系列】R语言绘制相关系数图
  • idea安装maven 拉取依赖失败的解决办法
  • AI问答之手机相机专业拍照模式的主要几个参数解释
  • 《PyQt6-3D:开启Python 3D开发新世界》
  • XSS(ctfshow)
  • cpu利用率,系统吞吐量,周转时间,等待时间,响应时间详解(操作系统)
  • 二进制安全-汇编语言-06-包含多个段的程序
  • QBoost 2025版:加速手机性能,提升使用体验
  • pytorch深度学习-Lenet-Minist
  • 从零开始搭建深度学习大厦系列-2.卷积神经网络基础(5-9)
  • 基于 Flutter 的开源文本 TTS 朗读器(支持 Windows/macOS/Android)
  • 从零实现一个GPT 【React + Express】--- 【2】实现对话流和停止生成
  • Flink Exactly Once 和 幂等
  • Spring for Apache Pulsar->Reactive Support->Message Consumption
  • wpf使用webview2显示网页内容(最低兼容.net framework4.5.2)
  • 以太网基础⑤UDP 协议原理与 FPGA 实现
  • 西电考研录取:哪些省份考研上岸西电更容易?
  • websocket的客户端(发送接收json的消息)
  • TCP-与-UDP-协议详解:原理、区别与应用场景全解析
  • 自动驾驶环境感知:天气数据采集与融合技术实战
  • 关键字前跟空格或首字母, 关键字后跟空格或标点符号; 标点符号后面不是必须跟空格;
  • Duplicate cleaner pro 的使用技巧
  • 汽车加气站操作工分类有几种
  • 制作一款打飞机游戏78:游戏选项
  • 城市脉搏中的隐形守护者