字符串的格式化相当于将字符串依照指定的格局进行 toString(), 个别有两种模式:
// 应用指定的格局字符串和参数返回一个格式化字符串。public static String format(String format, Object... args) {return new Formatter().format(format, args).toString();}
// 应用指定的语言环境、格局字符串和参数返回一个格式化字符串。public static String format(Locale l, String format, Object... args) {return new Formatter(l).format(format, args).toString();}
数据类型 |
阐明 |
转化模式 |
%s |
字符串类型 |
“string” |
%c |
字符类型 |
‘A’ |
%b |
布尔类型 |
true/false |
%o |
整数类型(八进制) |
111 |
%d |
整数类型(十进制) |
17 |
%x |
整数类型(十六进制) |
11 |
%f |
浮点类型(根本) |
66.66 |
%e |
指数类型 |
1.11e+5 |
%a |
浮点类型(十六进制) |
FF.22 |
%h |
散列码 |
11 |
%% |
百分比类型 |
17% |
%n |
换行符 |
|
%tx |
日期与工夫类型 |
|
测试
public class Format01 {public static void main(String[] args) {System.out.println(String.format("字符串:%s", "String"));
System.out.println(String.format("字符:%c", 'M'));
System.out.println(String.format("布尔类型:%b", 'M'>'A'));
System.out.println(String.format("八进制整数类型:%o", 17));
System.out.println(String.format("十进制整数类型:%d", 17));
System.out.println(String.format("十六进制整数类型:%x", 17));
System.out.println(String.format("根本浮点类型:%f", 99.1));
System.out.println(String.format("指数类型:%e", 100.111111111));
System.out.println(String.format("十六进制浮点类型:%a", 17.111111));
System.out.println(String.format("散列码:%h", 17));
System.out.println(String.format("百分比类型:17%%"));
System.out.print(String.format("换行符:%n", 17));
}
}
输入
字符串:String
字符:M
布尔类型:true
八进制整数类型:21
十进制整数类型:17
十六进制整数类型:11
根本浮点类型:99.100000
指数类型:1.001111e+02
十六进制浮点类型:0x1.11c71c53f39d2p4
散列码:11
百分比类型:17%
换行符:
标记 |
阐明 |
示例 |
输入 |
+ |
为负数增加符号 |
(“ 负数:%+f”,11.11)) |
负数:+11.110000 |
– |
左对齐 |
(“ 左对齐:%-5d”,11) |
左对齐:11 |
0 |
整数后面补 0 |
(“ 数字后面补 0:%04d”,11) |
数字后面补 0:0011 |
, |
对数字分组 |
(“ 按, 对数字分组:%,d”,111111111) |
按, 对数字分组:111,111,111 |
空格 |
数字后面补空格 |
(“ 空格:% 4d”,11) |
空格:11 |
( |
蕴含正数 |
(“ 应用括号蕴含正数:%(f”,-11.11) |
应用括号蕴含正数:(11.110000) |
# |
浮点数蕴含小数,八进制蕴含 0,十六进制蕴含 0x |
|
|
< |
格式化前一个转换符形容的参数 |
(“ 格式化前形容的参数:%f 转化后 %<3.3f”,111.1111111) |
格式化前形容的参数:111.111111 转化后 111.111 |
$ |
被格式化的参数索引 |
(“ 被格式化的参数索引:%1$d,%2$s”,11,”111.1111111″) |
被格式化的参数索引:11,111.1111111 |
测试
public class formatString {public static void main(String[] args) {System.out.println(String.format("负数:%+f",11.11));
System.out.println(String.format("右对齐:%+10d",11));
System.out.println(String.format("左对齐:%-5d",11));
System.out.println(String.format("数字后面补 0:%044d",11));
System.out.println(String.format("空格:% 4d",11));
System.out.println(String.format("按, 对数字分组:%,d",111111111));
System.out.println(String.format("应用括号蕴含正数:%(f",-11.11));
System.out.println(String.format("浮点数蕴含小数点:%#f",11.1));
System.out.println(String.format("八进制蕴含 0:%#o",11));
System.out.println(String.format("十六进制蕴含 0x:%#x",11));
System.out.println(String.format("格式化前形容的参数:%f 转化后 %<3.3f",111.1111111));
System.out.println(String.format("被格式化的参数索引:%1$d,%2$s",11,"111.1111111"));
}
}
输入
负数:+11.110000
右对齐:+11
左对齐:11
数字后面补 0:00000000000000000000000000000000000000000011
空格:11
按, 对数字分组:111,111,111
应用括号蕴含正数:(11.110000)
浮点数蕴含小数点:11.100000
八进制蕴含 0:013
十六进制蕴含 0x:0xb
格式化前形容的参数:111.111111 转化后 111.111
被格式化的参数索引:11,111.1111111
转换符 |
阐明 |
示例 |
c |
全副工夫日期 |
星期四 十二月 17 13:11:35 CST 2020 |
F |
年 - 月 - 日格局 |
2020-12-17 |
D |
月 / 日 / 年格局 |
12/17/20 |
r |
HH:MM:SS PM 格局(12 时制) |
01:11:35 下午 |
T |
HH:MM:SS 格局(24 时制) |
13:11:35 |
R |
HH:MM 格局(24 时制) |
13:11 |
测试
public class formatDate {public static void main(String[] args) {Date date = new Date();
System.out.println(String.format("全副工夫日期:%tc",date));
System.out.println(String.format("年 - 月 - 日格局:%tF",date));
System.out.println(String.format("月 / 日 / 年格局:%tD",date));
System.out.println(String.format("HH:MM:SS PM 格局(12 时制):%tr",date));
System.out.println(String.format("HH:MM:SS 格局(24 时制):%tT",date));
System.out.println(String.format("HH:MM 格局(24 时制):%tR",date));
}
}
输入
全副工夫日期:星期四 十二月 17 13:21:35 CST 2020
年 - 月 - 日格局:2020-12-17
月 / 日 / 年格局:12/17/20
HH:MM:SS PM 格局(12 时制):01:21:35 下午
HH:MM:SS 格局(24 时制):13:21:35
HH:MM 格局(24 时制):13:21
转换符 |
阐明 |
示例 |
H |
2 位数字 24 时制的小时(有余 2 位后面补 0) |
13 |
l |
2 位数字 12 时制的小时 |
1 |
k |
2 位数字 24 时制的小时 |
13 |
M |
2 位数字的分钟 |
33 |
L |
3 位数字的毫秒 |
745 |
S |
2 位数字的秒 |
33 |
N |
9 位数字的毫秒数 |
745000000 |
p |
Locale.US,\” 小写字母的上午或下午标记 (英) |
下午 |
Z |
时区缩写字符串 |
CST |
z |
绝对于 GMT 的 RFC822 时区的偏移量 |
+0800 |
s |
1970-1-1 00:00:00 到当初所通过的秒数 |
1608183213 |
Q |
1970-1-1 00:00:00 到当初所通过的毫秒数 |
1608183213745 |
测试
public class formatTime {public static void main(String[] args) {Date date = new Date();
System.out.println(String.format("2 位数字 24 时制的小时(有余 2 位后面补 0):%tH", date));
System.out.println(String.format("2 位数字 12 时制的小时:%tl", date));
System.out.println(String.format("2 位数字 24 时制的小时:%tk", date));
System.out.println(String.format("2 位数字的分钟:%tM", date));
System.out.println(String.format("3 位数字的毫秒:%tL", date));
System.out.println(String.format("2 位数字的秒:%tS", date));
System.out.println(String.format("9 位数字的毫秒数:%tN", date));
System.out.println(String.format("时区缩写字符串:%tZ", date));
System.out.println(String.format("绝对于 GMT 的 RFC822 时区的偏移量:%tz", date));
System.out.println(String.format("Locale.US,\" 小写字母的上午或下午标记 ( 英):%tp", date));
System.out.println(String.format("1970-1-1 00:00:00 到当初所通过的秒数:%ts", date));
System.out.println(String.format("1970-1-1 00:00:00 到当初所通过的毫秒数:%tQ", date));
}
}
输入
2 位数字 24 时制的小时(有余 2 位后面补 0):13
2 位数字 12 时制的小时:1
2 位数字 24 时制的小时:13
2 位数字的分钟:33
3 位数字的毫秒:745
2 位数字的秒:33
9 位数字的毫秒数:745000000
时区缩写字符串:CST
绝对于 GMT 的 RFC822 时区的偏移量:+0800
Locale.US," 小写字母的上午或下午标记 (英):下午
1970-1-1 00:00:00 到当初所通过的秒数:1608183213
1970-1-1 00:00:00 到当初所通过的毫秒数:1608183213745