String.format()
是 Java 中用于格式化字符串的方法,它允许将指定的参数按照指定的格式插入到字符串模板中。这种格式化操作可以将各种类型的数据转换成字符串,并且支持指定数据的格式化方式,例如数字的小数位数或日期的格式。
用法和参数
String formattedString = String.format(format, args);
format
是一个包含格式说明符的字符串,其中%
后面跟随一个格式字符表示将要插入的数据的类型和格式。args
是一个变长参数列表,包含了要格式化插入到format
字符串中的数据。
格式说明符
格式说明符由 %
后面跟随的内容组成,主要包括:
- 索引参数:可选的数字,指定
args
中的参数索引位置。例如%1$s
表示使用args
中第一个参数作为字符串。 - 格式化修饰符:可以包括宽度、精度和标志,用于格式化输出的方式。例如
%10.2f
表示输出一个浮点数,总宽度为10,保留两位小数。 - 转换字符:指定要格式化的数据类型,如
d
(整数)、f
(浮点数)、s
(字符串)、t
(日期时间)等。
示例
-
格式化字符串
String name = "Alice"; int age = 30; String message = String.format("Hello, %s. You are %d years old.", name, age); // 输出结果:Hello, Alice. You are 30 years old.
-
格式化数字
double price = 12.3456; String formattedPrice = String.format("The price is %.2f dollars.", price); // 输出结果:The price is 12.35 dollars.
-
日期时间格式化
Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = String.format("Current date and time: %tF %tT", now, now); // 输出结果:Current date and time: 2024-06-18 15:30:00
注意事项
- 格式说明符要与要插入的参数类型匹配,否则会抛出异常。
- 如果提供的参数数量不足或过多,或者参数类型与格式说明符不匹配,都会导致运行时异常。
String.format()
返回一个格式化后的字符串,不会直接改变原始的字符串或参数。
使用 String.format()
可以方便地生成格式化的字符串,适用于各种场景,如日志记录、用户界面显示、报告生成等需要动态生成文本内容的情况。
转换字符:
-
通用转换:
%s
:格式化为字符串。%b
:格式化为布尔值。%c
:格式化为字符。%d
:格式化为十进制整数。%o
:格式化为八进制整数。%x
、%X
:分别格式化为十六进制整数(小写或大写)。%h
:格式化为哈希码的十六进制表示。
-
浮点数转换:
%f
:格式化为十进制浮点数。%e
、%E
:分别以科学计数法格式化为浮点数(小写或大写)。%g
、%G
:根据数值的大小选择%f
或%e
格式(小写或大写)。
-
整数转换:
%d
:格式化为十进制整数。%o
:格式化为八进制整数。%x
、%X
:分别格式化为十六进制整数(小写或大写)。
-
日期/时间转换:
%t
:格式化为日期/时间。%tA
:全写的星期几(如 “Sunday”)。%ta
:缩写的星期几(如 “Sun”)。%tB
:全写的月份(如 “January”)。%tb
、%th
:缩写的月份(如 “Jan”)。%tY
:4 位数的年份。%ty
:2 位数的年份。%tm
:月份(01-12)。%td
:月中的天数(01-31)。%tH
:24 小时制的小时数(00-23)。%tI
:12 小时制的小时数(01-12)。%tM
:分钟数(00-59)。%tS
:秒数(00-60)。
-
其他转换:
%n
:换行符。%%
:百分号。