String.format格式化输出

149 阅读3分钟

String.format格式化输出通用适用于System.out.printf输出

基础转换符

转换符详细说明示例
%s字符串类型“喜欢请收藏”
%c字符类型‘m’
%b布尔类型true
%d整数类型(十进制)88
%x整数类型(十六进制)FF
%o整数类型(八进制)77
%f浮点类型8.888
%a十六进制浮点类型FF.35AE
%e指数类型9.38e+5
%g通用浮点类型(f和e类型中较短的)不举例(基本用不到)
%h散列码不举例(基本用不到)
%%百分比类型%(%特殊字符%%才能显示%)
%n换行符不举例(基本用不到)
%tx日期与时间类型(x代表不同的日期与时间转换符)不举例(基本用不到)
代码
public static void main(String[] args) {  
    System.out.printf("你好,%s!\n", "xzg");  
    System.out.printf("你好,%s%c\n", "xzg", '!');  
    System.out.printf("你好,%s%c%b\n", "xzg", '!', true);  
    System.out.printf("这是整数占位符:%d,%d,%d,%d\n", (byte) 1, (short) 23, (int) 456, (long) 123);  
    System.out.printf("这是16位整数占位符:%x,%x,%x,%x\n", (byte) 1, (short) 23, (int) 456, (long) 123);  
    System.out.printf("这是16位整数占位符:%o,%o,%o,%o\n", (byte) 1, (short) 23, (int) 456, (long) 123);  
    System.out.printf("这是浮点数占位符:%f,%f,%f,%f\n", 1.23, 23.456, (float) 456.789, (double) 123.456789);  
    System.out.printf("这是十六进制浮点类型占位符:%a,%a,%a,%a\n", 1.23, 23.456, (float) 456.789, (double) 123.456789);  
    System.out.printf("这是指数类型占位符:%e\n", 123.456789);  
    System.out.printf("这是通用浮点类型占位符:%g,%g,%g,%g\n", 1.23, 23.456, (float) 456.789, (double) 123.456789);  
    System.out.printf("这是散列码占位符:%h\n", 'a');  
    System.out.printf("这是百分比占位符:%d%%,%d%%,%f%%,%f%%\n", 1, 23, (float) 456.789, (double) 123.456789);  
    System.out.printf("这是换行符占位符:---%n");  
    Date date = new Date();  
    System.out.printf("这是日期占位符:%tc\n", date);  
}

// 输出
你好,xzg!
你好,xzg!
你好,xzg!true
这是整数占位符:123456123
这是16位整数占位符:117,1c8,7b
这是16位整数占位符:127710173
这是浮点数占位符:1.23000023.456000456.789001123.456789
这是十六进制浮点类型占位符:0x1.3ae147ae147aep00x1.774bc6a7ef9dbp40x1.c8c9fcp80x1.edd3c07ee0b0bp6
这是指数类型占位符:1.234568e+02
这是通用浮点类型占位符:1.2300023.4560456.789123.457
这是散列码占位符:61
这是百分比占位符:1%,23%,456.789001%,123.456789%
这是换行符占位符:---
这是日期占位符:周五 1206 16:35:03 CST 2024

针对字符、数字补充

转换符说明示例结果
+为正数或者负数添加符号
-左对齐
0数字前面补0
,以“,”对数字分组
(使用括号包含负数
#如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0
<格式化前一个转换符所描述的参数
$被格式化的参数索引
空格在整数之前添加指定数量的空格

针对日期类型%tx补充

转换符说明示例
c包括全部日期和时间信息
F“年-月-日”格式
D“月/日/年”格式
r“HH:MM:SS PM”格式(12时制)
T“HH:MM:SS”格式(24时制)
R“HH:MM”格式(24时制)
H2位数字24时制的小时(不足2位前面补0)
I2位数字12时制的小时(不足2位前面补0)
k2位数字24时制的小时(前面不补0)
l2位数字12时制的小时(前面不补0)
M2位数字的分钟(不足2位前面补0)
S2位数字的秒(不足2位前面补0)
L3位数字的毫秒(不足3位前面补0)
N9位数字的毫秒数(不足9位前面补0)
p小写字母的上午或下午标记
z相对于GMT的RFC822时区的偏移量
Z时区缩写字符串
s1970-1-1 00:00:00 到现在所经过的秒数
Q1970-1-1 00:00:00 到现在所经过的毫秒数