Java 字符串 format() 方法
示例
返回格式化字符串:
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")将大写。
以下字符可用于日期和时间格式化:
|
语法
以下选项之一:
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 字符串方法

