Java 教程

Java 教程 Java 简介 Java 下载安装和环境配置 Java 入门 Java 语法 Java 输出 Java 注释 Java 变量 Java 数据类型 Java 数据类型转换 Java 运算符 Java 字符串 Java 数学方法 Java 布尔值 Java If...Else Java Switch Java While 循环 Java For 循环 Java Break/Continue Java 数组

Java 方法

Java 方法 Java 方法参数 Java 方法重载 Java 作用域 Java 递归

Java 类库

Java OOP Java 对象和类 Java 类属性 Java 类方法 Java 构造函数 Java this 关键字 Java 修饰符 Java 封装 Java 包与API Java 继承 Java 多态 Java super 关键字 Java 内部类 Java 抽象类 Java 接口 Java 匿名登录 Java 枚举 Java 用户输入 Java 日期和时间

Java 错误

Java 错误 Java 调试 Java 异常 Java 多重异常 Java try-with-resources

Java 文件处理

Java 文件 Java 创建文件 Java 写入文件 Java 读取文件 Java 删除文件

Java I/O Streams

Java I/O Streams Java FileInputStream Java FileOutputStream Java BufferedReader Java BufferedWriter

Java 数据结构

Java 数据结构 Java 集合 Java List 列表 Java ArrayList Java LinkedList Java List 列表排序 Java Set Java HashSet Java TreeSet Java LinkedHashSet Java Map 映射 Java HashMap Java TreeMap Java LinkedHashMap Java Iterator 迭代器 Java 算法

Java 高级

Java 包装类 Java 泛型 Java 注解 Java 正则表达式 Java 线程 Java Lambda 表达式 Java 高级排序

Java 项目

Java 项目

Java 操作指南

Java 操作指南

Java 参考手册

Java 参考 Java 关键字 Java 字符串方法 Java 数学方法 Java 输出方法 Java 数组方法 Java ArrayList 方法 Java LinkedList 方法 Java HashMap 方法 Java Scanner 方法 Java File 方法 Java FileInputStream Java FileOutputStream Java BufferedReader Java BufferedWriter Java Iterator 方法 Java Collections 方法 Java System 方法 Java Errors & Exceptions

Java 实例

Java 实例 Java 练习 Java 测验 Java 编译器

Java 各版本参考

Java8 (2014-3-18) Java9 (2017-9-21) Java10 (2018-3-10) Java11 (2018 年 9 月) Java12 (2019 年 3 月) Java13 (2019 年 9 月) Java14 (2020-3-17) Java15 (2020 年 9 月) Java16 (2021 年 3 月)

Java 常用包参考

java.io 包 java.lang 包 java.math 包 java.time 包 java.util 包 java.util.regex 包 java.util.zip 包



Java 字符串 format() 方法

❮ String 字符串方法


示例

返回格式化字符串:

String myStr = "Hello %s! One kilobyte is %,d bytes.";
String result = String.format(myStr, "World", 1024);
System.out.println(result);

亲自试一试 »

注:您可以在本页底部找到更多"动手试试"的示例。


定义和用法

format() 方法使用区域设置、格式和其他参数返回格式化字符串。

如果未向此方法传递区域设置,则使用 Locale.getDefault() 提供的区域设置。

其他参数中的数据将被格式化并写入格式化字符串中的占位符,这些占位符以 % 符号标记。参数的格式化方式取决于 % 符号后面的字符序列。

占位符

占位符的格式为%[arg$][flags][width][.precision]conversion。方括号内的组件是可选的。

各组件的说明:

  • arg$ - 可选。一个数字后跟一个 $ 符号,表示要使用哪个附加参数,参数编号从 1 开始。它可以替换为 <,表示应使用前一个占位符中的参数。
  • flags - 可选。以下任意字符的序列:
    • - - 将输出左对齐,方法是在右侧而不是左侧添加填充空格。
    • # - 根据转换方式显示格式化数据的另一种表示形式。
    • + - 使正数始终以"+"开头。
    • - (空格字符)在正数前添加空格,主要是为了使数字与负数的数字对齐。
    • 0 - 在数字左侧填充零。
    • , - 对数字进行分组(例如,以千为单位)并在组之间添加分隔符。这受区域设置影响。
    • ( - 将负数用括号括起来。
  • width - 可选。一个整数,指定输出应占用的最小字符数。如有必要,会在右侧添加空格以达到此数字,如果使用 - 标志,则会在左侧添加空格。
  • .precision - 可选。一个 . 后跟一个整数,指示格式化数据中要显示的十进制位数。
  • conversion - 必需。一个字符,指示参数数据的表示方式。如果该字符为大写,则数据将尽可能以大写形式格式化。下表显示了可能的字符列表。

转换列表

字符 转换 描述
% 百分号 在输出中显示一个字面意义上的"%"字符。
n 换行符 在输出中显示一个换行符。
b 或 B 布尔值 将参数的布尔值显示为"true"或"false"。如果使用"B",则显示"TRUE"或"FALSE"。
h 或 H 无符号十六进制整数 将参数的二进制数据表示为无符号十六进制整数。如果使用"H",则数字 A 到 F 将以大写形式显示。

注意: 对于非正整数的数据,此值并不代表其真实值。

s 或 S 字符串 显示参数的默认字符串表示形式。如果使用"S",则字符串将尽可能转换为大写。
c 或 C Unicode 字符 显示参数的 Unicode 字符表示形式。对于整数,这是与该数字对应的 Unicode 字符。如果使用"C",则字符将尽可能转换为大写。
d 十进制整数 将整数表示为十进制整数。
o 八进制整数 将整数表示为八进制整数。"#"标志会在数字前加上"0"。
x 或 X 十六进制整数 将一个整数表示为十六进制整数。"#"标志会在数字前加上"0x"。如果使用"X",则数字 A 到 F 和字母 X 都以大写形式显示。
e 或 E 科学计数法 以科学计数法表示一个浮点数。如果使用"E",则表示中的字母"E"将以大写形式显示。即使没有小数位,使用"#"标志也会强制添加小数点。
f 浮点数 表示一个浮点数。即使没有小数位,使用"#"标志也会强制添加小数点。
g 或 G 通用数 显示浮点数在 f 和 e 或 E 之间的最短表示形式。
a 或 A 十六进制浮点数 显示浮点数的内部十六进制表示形式。
t 或 T 时间或日期 显示格式化的日期或时间。t 或 T 后必须跟一个字符,用于指定日期或时间的格式。如果使用"T",则日期或时间的文本部分(例如"JANUARY")将大写。

以下字符可用于日期和时间格式化:

  • H - 24 小时制小时(00 至 23)
  • I - 12 小时制小时(01 至 12)
  • k - 24 小时制小时(0 至 23)
  • l(小写字母 'L')- 12 小时制小时(1 至 12)
  • M - 分钟(00 至 59)
  • S - 秒(00 至 59)(闰秒可能为 60)
  • L - 毫秒(000 至 999)
  • N - 纳秒(000000000 至 999999999)
  • p - "上午", "下午", "AM"或"PM"分别表示上午或下午
  • z - 与格林威治时间的差值(例如:-0800)
  • Z - 时区缩写(例如:EST、MDT)
  • s - 自 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)以来的秒数
  • Q - 自 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)以来的毫秒数
  • B - 月份的完整文本表示(1 月至 12 月)
  • b 或 h - 月份的简短文本表示(三个字母)
  • A - 日期的完整文本表示(例如:星期一)
  • a - 日期的简短文本表示(例如:Mon)
  • C - 年份的前两位数字(例如,1970 年显示为"19")
  • Y - 年份的四位数字表示
  • y - 年份的两位数字表示
  • j - 一年中的第几天,带前导零(001 至 366)
  • m - 月份的数字表示(01 至 12)
  • d - 月份中的第几天(01 至 31)
  • e - 不含前导零的日期(1 至 31)
  • R - 24 小时制时间(例如:21:30)
  • T - 带秒的 24 小时制时间(例如:21:30:02)
  • r - 带秒的 12 小时制时间(例如:09:30:02 PM)("AM"和"PM"始终大写)
  • D - 月/日/年格式的日期(例如:12/17/23)
  • F - 年-月-日格式的日期(例如:2023-12-17)
  • c - 完整的日期和时间(例如:Thu Mar 28 10:51:00 EDT 2024)

语法

以下选项之一:

public static String format(Locale locale, String format, Object... args)
public static String format(String format, Object... args)

参数值

参数 描述
locale 可选。用于确定某些格式的区域设置,例如小数点和分组分隔符使用的字符。
format 必需。要返回的字符串,其中可以包含用于指示如何格式化其他参数的占位符。
args 可选。方法的任意数量的附加参数,其值可以格式化并显示在返回的字符串中。

技术细节

返回值: 使用指定的区域设置、格式和参数格式化的 String 值。
抛出异常: IllegalFormatException - 如果格式字符串包含无效占位符或占位符与参数的数据类型不兼容。
Java 版本: 1.5

更多示例

示例

一个使用所有组件的占位符:

String result = String.format("%2$,3.2f %1$s", "meters", 1260.5052);
System.out.println(result);

以下是占位符 %2$,3.2f 各部分的工作原理:

  • 2$ 表示使用第二个参数的值
  • , 表示数字应分组(通常按千位分组)
  • 3 表示数据表示形式至少应为 3 个字符
  • .2 表示小数点后应有两位数字
  • f 表示数据以浮点数形式表示

亲自试一试 »

示例

请以不同的顺序使用参数:

String result = String.format("%3$c %2$c %1$c", 'a', 'b', 'c');
System.out.println(result);

亲自试一试 »

示例

格式化浮点数:

double myNumber = 123456.78;
String result;

// Default
result = String.format("%f", myNumber);
System.out.println(result);

// 保留两位小数
result = String.format("%.2f", myNumber);
System.out.println(result);

// 不保留小数
result = String.format("%.0f", myNumber);
System.out.println(result);

// 保留小数点,但不保留小数
result = String.format("%#.0f", myNumber);
System.out.println(result);

// 分组数字
result = String.format("%,.2f", myNumber);
System.out.println(result);

// 保留两位有效数字的科学计数法
result = String.format("%.2e", myNumber);
System.out.println(result);

亲自试一试 »

示例

根据 Unix 时间戳格式化日期:

long date = 1711638903488L; // Unix 时间戳(自 1970 年 1 月 1 日以来的毫秒数)
String result

// Time
result = String.format("%tl:%<tM %<tp", date);
System.out.println(result);

// 月和日
result = String.format("%tB %<te", date);
System.out.println(result);

// 完整日期表示
result = String.format("%tc", date);
System.out.println(result);

亲自试一试 »

示例

根据 Unicode 代码点表示字符:

String result;

// 根据 Unicode 代码点表示字符
result = String.format("%c%c%c%c%c", 72, 101, 108, 108, 111);
System.out.println(result);

// 强制将 Unicode 字符转换为大写
result = String.format("%C%C%C%C%C", 72, 101, 108, 108, 111);
System.out.println(result);

亲自试一试 »


❮ String 字符串方法