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
这是整数占位符:1,23,456,123
这是16位整数占位符:1,17,1c8,7b
这是16位整数占位符:1,27,710,173
这是浮点数占位符:1.230000,23.456000,456.789001,123.456789
这是十六进制浮点类型占位符:0x1.3ae147ae147aep0,0x1.774bc6a7ef9dbp4,0x1.c8c9fcp8,0x1.edd3c07ee0b0bp6
这是指数类型占位符:1.234568e+02
这是通用浮点类型占位符:1.23000,23.4560,456.789,123.457
这是散列码占位符:61
这是百分比占位符:1%,23%,456.789001%,123.456789%
这是换行符占位符:---
这是日期占位符:周五 12月 06 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时制) | |
| | |
| H | 2位数字24时制的小时(不足2位前面补0) | |
| I | 2位数字12时制的小时(不足2位前面补0) | |
| k | 2位数字24时制的小时(前面不补0) | |
| l | 2位数字12时制的小时(前面不补0) | |
| M | 2位数字的分钟(不足2位前面补0) | |
| S | 2位数字的秒(不足2位前面补0) | |
| L | 3位数字的毫秒(不足3位前面补0) | |
| N | 9位数字的毫秒数(不足9位前面补0) | |
| p | 小写字母的上午或下午标记 | |
| z | 相对于GMT的RFC822时区的偏移量 | |
| Z | 时区缩写字符串 | |
| | |
| s | 1970-1-1 00:00:00 到现在所经过的秒数 | |
| Q | 1970-1-1 00:00:00 到现在所经过的毫秒数 | |