JAVA String.format详解

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


你可能感兴趣的:(java)