Java String.format () 完整用法指南

目录

一、基础认知

核心作用

核心语法

二、格式说明符的完整结构

三、全量常用转换符

四、综合实战示例(覆盖所有核心场景)

五、注意事项

六、核心总结


String.format()是 Java 中最核心的字符串格式化工具,能根据指定模板和参数生成标准化字符串,替代硬编码拼接,提升代码可读性和跨平台兼容性。以下是其完整、系统的用法讲解。

一、基础认知

核心作用

将普通文本与动态参数按指定格式拼接,返回格式化后的字符串(类似 C 语言printf,但不直接输出,仅返回字符串)。

核心语法

提供两个重载方法,日常开发中前者更常用:

// 1. 默认本地环境(Locale):适配当前系统的数字/日期格式 public static String format(String format, Object... args) // 2. 指定本地环境:比如强制使用英文/中文区域的日期/数字格式 public static String format(Locale l, String format, Object... args) 
  • format:格式模板,包含普通文本和以%开头的格式说明符(占位符);
  • args:可变参数,按顺序匹配模板中的占位符(可通过参数索引复用 / 乱序)。

二、格式说明符的完整结构

格式说明符是String.format()的核心,决定参数的格式化规则,完整结构如下:

%[参数索引$][标志][宽度][.精度]转换符 

各部分含义(必选 / 可选标注):

组成部分是否必选说明
%格式说明符的起始标记。
参数索引 $指定使用第几个参数(如%2$d表示第二个参数作为整数),可复用参数。
标志格式化修饰符(如左对齐、补零、千分位、显示正负号)。
宽度指定输出的最小字符数(不足时补空格 / 零,超出则按实际长度)。
. 精度浮点数:指定小数位数;字符串:指定截取长度;整数 / 字符:无意义。
转换符核心,指定参数的类型(如整数、字符串、日期、进制)。

三、全量常用转换符

转换符决定参数的解析类型,以下是覆盖 99% 场景的全量常用转换符(标注「补充」为之前额外新增的):

转换符类型说明示例(参数)输出效果
d整数(十进制)常规整数格式化%d (123)123
s字符串任意对象都会调用toString()转为字符串%s ("Java")Java
c字符单个字符,参数为charint(ASCII 码)%c ('A')A
b布尔值null/ 非false则输出true,否则false%b (true)true
f浮点数(小数)默认保留 6 位小数,可通过精度调整%f (3.1415)3.141500
e科学计数法浮点数转为科学计数法格式%e (123.45)1.234500e+02
t/T日期时间配合子转换符使用(如%tY= 年份),T表示结果大写%tY (new Date())2025
%tF日期(ISO 标准)【补充】快捷格式,等价于%tY-%tm-%td,输出yyyy-MM-dd%tF (new Date())2025-12-26
%tD日期(美式)【补充】快捷格式,等价于%tm/%td/%ty,输出MM/dd/yy%tD (new Date())12/26/25
x/X十六进制整数【补充】%x小写(a-f),%X大写(A-F)%X (255)FF
o八进制整数【补充】十进制转八进制%o (10)12
%%百分号本身【补充】转义输出%,直接写%会报错%% ()%
%n换行符【补充】跨平台换行(Windows=\r\n,Linux=\n),替代硬编码\n%n ()系统对应换行符

四、综合实战示例(覆盖所有核心场景)

以下示例整合了基础用法和补充格式符,可直接复制运行:

import java.util.Date; import java.util.Locale; public class StringFormatCompleteDemo { public static void main(String[] args) { Date now = new Date(); // ========== 场景1:基础类型格式化(字符串、整数、浮点数、布尔、字符) ========== String basic = String.format( "姓名:%s,年龄:%d,成绩:%.2f,是否及格:%b,等级:%c", "张三", 25, 89.567, true, 'A' ); System.out.println("基础类型:" + basic); // 输出:姓名:张三,年龄:25,成绩:89.57,是否及格:true,等级:A // ========== 场景2:宽度/标志修饰(补零、左对齐、千分位、正负号) ========== String modifier = String.format( "编号:%05d,姓名:%-10s,金额:%,d 元,温度:%+d℃", 123, "李四", 1234567, -5 ); System.out.println("宽度/标志:" + modifier); // 输出:编号:00123,姓名:李四 ,金额:1,234,567 元,温度:-5℃ // ========== 场景3:日期时间格式化(含快捷格式%tF/%tD) ========== String date = String.format( "ISO日期:%tF,美式日期:%tD,完整时间:%tF %tT%n", now, now, now, now ); System.out.println("日期时间:" + date); // 输出:ISO日期:2025-12-26,美式日期:12/26/25,完整时间:2025-12-26 15:30:45(示例) // ========== 场景4:进制转换(十六进制%X、八进制%o) ========== String radix = String.format( "255的十六进制(大写):%04X,10的八进制:%03o", 255, 10 ); System.out.println("进制转换:" + radix); // 输出:255的十六进制(大写):00FF,10的八进制:012 // ========== 场景5:特殊符号(百分号%%、跨平台换行%n) ========== String special = String.format( "成功率:%.1f%%%n第一行内容%n第二行内容", 99.5 ); System.out.println("特殊符号:" + special); // 输出:成功率:99.5% // 第一行内容 // 第二行内容 // ========== 场景6:参数索引(复用/乱序参数) ========== String index = String.format( "数字:%2$d,字符串:%1$s,再次使用数字:%2$d", "测试", 666 ); System.out.println("参数索引:" + index); // 输出:数字:666,字符串:测试,再次使用数字:666 } } 

五、注意事项

  1. 参数匹配:占位符数量需与参数数量匹配(参数索引复用除外),否则抛MissingFormatArgumentException
  2. 类型匹配:转换符需与参数类型匹配(如%d不能接收字符串),否则抛IllegalFormatConversionException
  3. 浮点数精度%.2f会自动四舍五入(如3.1453.15);
  4. 转义规则:输出%必须用%%,直接写%会被识别为格式符起始标记导致报错;
  5. 跨平台兼容:优先用%n替代\n,避免 Windows/Linux 换行符不一致问题;
  6. 日期参数%tF/%tD仅支持Date/Calendar/LocalDateTime等日期类型参数。

六、核心总结

  1. 核心结构:格式说明符的核心是%+转换符(必选),参数索引、标志、宽度、精度为可选修饰,可灵活控制输出样式;
  2. 高频转换符
    • 基础类型:%d(整数)、%s(字符串)、%f(浮点数);
    • 日期:%tF(ISO 标准日期)、%tT(完整时间);
    • 特殊场景:%X(十六进制)、%%(百分号)、%n(跨平台换行);
  3. 最佳实践:避免硬编码拼接字符串,用String.format()实现标准化输出;优先用%tF/%tT简化日期格式化,用%n保证跨平台兼容性。

Read more

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-串行调用多个tools(三)

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-串行调用多个tools(三)

一、前言     Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。     本篇将介绍如何在Qwen-Agent中实现多个tools联动。     相关文章     使用vLLM(不使用Qwen-Agent的方式)进行工具调用:开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现推理加速的正确姿势-Docker-Tools助力(四)      Qwen-Agent使用入门:

By Ne0inhk

git详细使用教程

文章目录 * 一、 git介绍与安装 * 1、git介绍 * 2、git的安装 * 3、git使用前的说明 * 二、git的基础使用 * 1、走进git之前 * 2、git基础使用 * 1、`git init` 项目初始化(`init`)成仓库(`repository`) * 2、`git add` 管理文件 * 3、`git commit` 把文件提交到仓库,命令: * 三、git 的高级使用 * 1、git的高级使用1 * 1、`git reset --hard 版本号` 版本回滚 * 2、`git reflog` 查看所有的提交记录 * 2、git 的高级使用2 * 1、

By Ne0inhk
【2026 最新】玩转 Obsidian 简约美化 + 插件推荐 + Git 多端同步全流程教程

【2026 最新】玩转 Obsidian 简约美化 + 插件推荐 + Git 多端同步全流程教程

前言 这篇文章分享我个人在 Windows 上把 Obsidian 打造成“简约但好用”的一套方案:主题美化、常用配置、插件推荐,以及用 Git 实现多端同步。 一、下载安装 Obsidian 下载安装可以查看我的这篇文章: 【2025 最新】最好用必备笔记软件 Obsidian 的下载安装与使用教程-ZEEKLOG博客https://blog.ZEEKLOG.net/2301_80035882/article/details/145573354?sharetype=blogdetail&sharerId=145573354&sharerefer=PC&sharesource=2301_80035882&spm=1011.2480.3001.8118 二、

By Ne0inhk
Flutter 三方库 git_hooks 鸿蒙强干预研发质量审核截断防线设防适配解析:依托钩子拦截引擎封锁全域代码递交链路建立极强合规化审计审查防火墙斩断-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 git_hooks 鸿蒙强干预研发质量审核截断防线设防适配解析:依托钩子拦截引擎封锁全域代码递交链路建立极强合规化审计审查防火墙斩断-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 git_hooks 鸿蒙强干预研发质量审核截断防线设防适配解析:依托钩子拦截引擎封锁全域代码递交链路建立极强合规化审计审查防火墙斩断技术债堆砌 前言 在 OpenHarmony 的大规模团队协作中,代码质量是团队的生命线。如果没有有效的约束,不符合规范的代码(甚至是无法通过静态分析的代码)会轻易地通过 git commit 进入代码库,导致 CI 构建频繁失败。git_hooks 库为 Flutter 开发者提供了一种轻量级的脚本化方案,可以在 Git 的关键生命周期(如提交前、推送前)自动运行检查。本文将带大家在鸿蒙端实战适配该库,夯实自动化工程的地基。 一、原直线性 / 概念介绍 1.1 基础原理/概念介绍 git_hooks 的核心逻辑是基于 Git

By Ne0inhk