1> 常规类型的格式化
String类的 format()方法用于创建格式化的字符串以及连接多个字符串对象,format()方法有两种重载形式:
format(String format, Object... args):新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串
format(Locale locale, String format, Object... args):使用指定的语言环境,制定字符串格式和参数生成格式化的字符串
(1) %[index$][标识][最小宽度]转换方式:格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解,就是最终该整数转化的字符串最少包含多少位数字
(2) %[index$][标识][最少宽度][.精度]转换方式:浮点数的转换多了一个“精度”选项,可以控制小数点后面的位数
显示不同转换符实现不同数据类型到字符串的转换,如下所示:
转换符
|
说明
|
示例
|
%s
|
字符串类型
|
"mingrisoft"
|
%c
|
字符类型
|
'm'
|
%b
|
布尔类型
|
true
|
%d
|
整数类型(十进制)
|
99
|
%x
|
整数类型(十六进制)
|
FF
|
%o
|
整数类型(八进制)
|
77
|
%f
|
浮点类型
|
99.99
|
%a
|
十六进制浮点类型
|
FF.35AE
|
%e
|
指数类型
|
9.38e+5
|
%g
|
通用浮点类型(f和e类型中较短的)
|
f123
|
%h
|
散列码
|
|
%%
|
百分比类型
|
%
|
%n
|
换行符
|
|
%tx
|
日期与时间类型(x代表不同的日期与时间转换符)
|
|
如:String.format("我的名字是%s,你叫什么","张三");
搭配转换符的标志
标志
|
说明
|
示例
|
结果
|
+
|
结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)
|
("%+d",15)
|
+15
|
−
|
在最小宽度内左对齐,不可以与“用0填充”同时使用
|
("%-5d",15)
|
|15 |
|
0
|
数字前面补0
|
("%04d", 99)
|
0099
|
空格
|
正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)
|
("% 4d", 99)
|
| 99|
|
,
|
只适用于10进制,每3位数字之间用“,”分隔
|
("%,f", 9999.99)
|
9,999.990000
|
(
|
若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同‘+’具有同样的限制)
|
("%(f", -99.99)
|
(99.990000)
|
#
|
只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x
|
("%#x", 99)
("%#o", 99)
|
0x63
0143
|
<
|
格式化前一个转换符所描述的参数
|
("%f和%<3.2f", 99.45)
|
99.450000和99.45
|
$
|
被格式化的参数索引
|
("%1$d,%2$s", 99,"abc")
|
99,abc
|
2> 日期和事件字符串格式化
%tx转换符中的x代表另外的处理日期和时间格式的转换符,它们的组合能够将日期和时间格式化成多种格式
转换符
|
说明
|
示例
|
c
|
包括全部日期和时间信息
|
星期六 十月 27 14:21:20 CST 2007
|
F
|
“年-月-日”格式
|
2007-10-27
|
D
|
“月/日/年”格式
|
10/27/07
|
r
|
“HH:MM:SS PM”格式(12时制)
|
02:25:51 下午
|
T
|
“HH:MM:SS”格式(24时制)
|
14:28:16
|
R
|
“HH:MM”格式(24时制)
|
14:28
|
和日期格式转换符相比,时间格式的转换符要更多、更精确。它可以将时间格式化成时、分、秒甚至时毫秒等单位,格式化时间字符串的转换符:
转换符 | 说明 | 示例 |
H | 2位数字24时制的小时(不足2位前面补0) | 15 |
I | 2位数字12时制的小时(不足2位前面补0) | 03 |
k | 2位数字24时制的小时(前面不补0) | 15 |
l | 2位数字12时制的小时(前面不补0) | 3 |
M | 2位数字的分钟(不足2位前面补0) | 03 |
S | 2位数字的秒(不足2位前面补0) | 09 |
L | 3位数字的毫秒(不足3位前面补0) | 015 |
N | 9位数字的毫秒数(不足9位前面补0) | 562000000 |
p | 小写字母的上午或下午标记 |
中:下午
英:pm
|
z | 相对于GMT的RFC822时区的偏移量 | +0800 |
Z | 时区缩写字符串 | CST |
s | 1970-1-1 00:00:00 到现在所经过的秒数 | 1193468128 |
Q | 1970-1-1 00:00:00 到现在所经过的毫秒数 | 1193468128984 |