通配符
与 C 语言中的 printf 参数列表非常类似,java 格式化方法的 format 参数也是通过通配符的基本字符串表示的:java 格式化文本通配符通配符说明示例
%sString"java1.5"
%cchar'm'
%bbooleantrue
%dint(十进制)99
%xint(十六进制)FF
%oint(八进制)77
%ffloat(十进制)99.99
%afloat(十六进制)FF.35AE
%e指数类型9e+5
%g通用浮点类型(选取浮点表示法与指数表示法中较短的一种)
%h散列码
%%%%
%n换行符\n
%tx日期与时间Date 对象
下面展示了基本的用法:
package com.techlog.test.service;
import java.util.Formatter;
/**
* just for test
* Created by techlog on 2016/5/21.
*/
public class ForTest {
public static void main(String[] argv) {
Formatter formmater = new Formatter(System.out);
formmater.format("Hi, %s%n", "Lisa");
}
}
这里,我们使用了 System.out 作为参数创建 Formatter 对象,因此执行 format 方法后会自动输出到标准输出
如果我们使用默认构造器创建 Formatter 对象,不传递任何参数,则 format 方法会返回格式化后的 String(虽然无论用什么参数创建 Formatter 对象,format 方法都会返回格式化后的 String,但是通常我们使用 System.out 创建 Formatter 对象并不关心 format 方法的返回)
限定符
同时 java 还未格式化参数提供了限定符标志:java 格式化限定符标志说明示例结果
+为正数或者负数添加符号("%+d",15)+15
−左对齐("%-5d",15)|15 |
0数字前面补0("%04d", 99)0099
空格在整数之前添加指定数量的空格("% 4d", 99)| 99|
,以“,”对数字分组("%,f", 9999.99)9,999.990000
(使用括号包含负数("%(f", -99.99)(99.990000)
#如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0("%#x", 99), ("%#o", 99)0x63, 0143
$被格式化的参数索引("%1$d,%2$s", 99,"abc")99,abc
日期时间的格式化java 格式化日期时间限定符限定符说明示例
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
H2位数字24时制的小时(不足2位前面补0)15
I2位数字12时制的小时(不足2位前面补0)03
k2位数字24时制的小时(前面不补0)15
l2位数字12时制的小时(前面不补0)3
M2位数字的分钟(不足2位前面补0)03
S2位数字的秒(不足2位前面补0)09
L3位数字的毫秒(不足3位前面补0)015
N9位数字的毫秒数(不足9位前面补0)562000000
p小写字母的上午或下午标记中:下午,英:pm
z相对于GMT的RFC822时区的偏移量+0800
Z时区缩写字符串CST
package com.techlog.test.service;
import java.util.Date;
import java.util.Formatter;
/**
* just for test
* Created by techlog on 2016/5/21.
*/
public class ForTest {
public static void main(String[] argv) {
Date date=new Date();
Formatter formatter = new Formatter(System.out);
formatter.format("全部日期和时间信息:%tc%n", date);
formatter.format("月/日/年格式:%tD%n", date);
formatter.format("HH:MM:SS PM格式(12时制):%tr%n", date);
formatter.format("HH:MM:SS格式(24时制):%tT%n", date);
formatter.format("年-月-日格式:%tF%n", date);
formatter.format("2位数字24时制的小时(不足2位前面补0):%tH%n", date);
}
}
打印出了:
全部日期和时间信息:星期六 五月 21 22:10:55 CST 2016
月/日/年格式:05/21/16
HH:MM:SS PM格式(12时制):10:10:55 下午
HH:MM:SS格式(24时制):22:10:55
年-月-日格式:2016-05-21
2位数字24时制的小时(不足2位前面补0):11