Java工具包中的Formatter类





本文目录

1 Formatter类

2 格式化说明符

3 其它相关方法

 

1 Formatter类

 

1.1 使用方法

Formatter formatter = new Formatter([destination]);

formatter.format(String format, Object…args);

 

1.2 使用说明

(1)Formatter构造参数:

若无参数,格式化后的字符串会被存放在一个内部的StringBuffer中,此后,可通过formatter.toString()方法返回格式化后的字符串。


 
 
  1. // 无参数构造Formatter对象
  2. Formatter formatter = new Formatter();
  3. // 格式化操作
  4. formatter.format( "The result number is %d.", 7);
  5. // 获得格式化后的字符串
  6. String str = formatter.toString();
  7. // 控制台输出内容:The result number is 7.
  8. System.out.println(str);

若有参数,该参数表示要输出的目标位置,可以是一个StringBuffer对象,一个文件,或一个数据流,此后,格式化的字符串将直接输出到指定位置。


 
 
  1. // 构造Formatter对象并指向标准输出流
  2. Formatter formatter = new Formatter(System.out);
  3. // 格式化并输出到指定位置(控制台输出内容:The result number is 7.)
  4. formatter.format( "The result number is %d.", 7);

 

(2)format方法参数:

String format

是一个包含格式化说明符的字符串,该字符串指定了整体目标格式,通过格式化说明符进行占位并指定相应位置的内容格式;

 

Object… args

表示多个参数对象,其内容将依次对应format中的占位符(格式化说明符),根据指定的内容格式填充到指定位置,从而形成一个满足要求的字符串。

2 格式化说明符

2.1 格式

%[argument_index$][flags][width][.precision]conversion

2.2 格式说明

(1)argument_index$:指定对应的内容参数位置,默认按照顺序依次对应。

(2)flags:格式控制。

(3)width:区域宽度。

(4).precision:对于浮点型数据,表示显示的小数位数;对于字符串数据,表示显示的字符数量。

(5)conversion:类型转换字符。

 

2.3 格式控制(flags)





























符号作用示例效果
无负号右对齐formatter.format(“%8d“, 1000);*    1000*
有负号“-”左对齐formatter.format(“%-8d“, 1000);1000    
有加号“+”正数前显示正号
负数前显示负号
formatter.format(“%+8d“, 1000);
formatter.format(“%+8d“, -1000);
*   +1000*
*   -1000*
有空格“ ”正数前显示空格
负号前显示负号
formatter.format(“% 8d“, 1000);
formatter.format(“% 8d“, -1000);
*    1000*
*   -1000*
有零“0”使用0填充剩余位置formatter.format(“%08d“, 1000);00001000
有逗号“,”每3位数字添加一个逗号formatter.format(“%,8d“, 1000);*   1,000*

 

 

2.4 类型转换字符

 









































符号类型示例效果
d整数型(十进制)formatter.format(“%d”, 1000);1000
o整数型(八进制)formatter.format(“%o”, 1000);1750
x整数型(十六进制)formatter.format(“%x”, 1000);3e8
f浮点型(十进制)formatter.format(“%f”, 1000.0);1000.000000
e浮点型(科学计数)formatter.format(“%e”, 1000.0);1.000000e+03
b布尔型formatter.format(“%b”, true);true
c字符型formatter.format(“%c”, ‘A’);A
s字符串型formatter.format(“%s”, “String”);String
%字符“%”formatter.format(“%d%%”, 100);100%

 

2.5 时间类型转换字符

 

























































































































符号类型示例效果
tC上世纪formatter.format(“%tC”, calendar);20
tY年(4位)formatter.format(“%tY”, calendar);2017
ty年(2位)formatter.format(“%ty”, calendar);17
tmformatter.format(“%tm”, calendar);11
tB月份formatter.format(“%tB”, calendar);November
tb月份缩写formatter.format(“%tb”, calendar);Nov
td日(2位)formatter.format(“%td”, calendar);20
teformatter.format(“%te”, calendar);20
tA星期formatter.format(“%tA”, calendar);Monday
ta星期(缩写)formatter.format(“%ta”, calendar);Mon
tH小时(24小时制)(2位)formatter.format(“%tH”, calendar);18
tk小时(24小时制)formatter.format(“%tk”, calendar);18
tI小时(12小时制)(2位)formatter.format(“%tI”, calendar);06
tl小时(12小时制)formatter.format(“%tl”, calendar);6
tM分钟formatter.format(“%tM”, calendar);10
tSformatter.format(“%tS”, calendar);22
tL毫秒formatter.format(“%tL”, calendar);490
tN微秒formatter.format(“%tN”, calendar);570000000
tp上午/下午formatter.format(“%tp”, calendar);pm
tz时区formatter.format(“%tz”, calendar);+0800
tZ时区(缩写)formatter.format(“%tZ”, calendar);CST
ts自1970-01-01 00:00的秒数formatter.format(“%ts”, calendar);1511172687
tQ自1970-01-01 00:00的毫秒数formatter.format(“%tQ”, calendar);1511172687297
tFYYYY-MM-DDformatter.format(“%tF”, calendar);2017-11-20
tDMM/DD/YYformatter.format(“%tD”, calendar);11/20/17
tRHH:MM(24小时制)formatter.format(“%tR”, calendar);18:11
tTHH:MM:SS(24小时制)formatter.format(“%tT”, calendar);18:11:27
trHH:MM:SS 上午/下午formatter.format(“%tr”, calendar);06:11:27 pm
tc星期 月 日 HH:MM:SS YYYYformatter.format(“%tc”, calendar);Mon Nov 20 18:11:27 CST 2017

 

 

3 其它相关方法

 

3.1 String.format方法

该方法内部,实际上也是通过Formatter类进行格式化,然后,将格式化后的字符串返回,其内部代码如下:


 
 
  1. public static String format(String format, Object... args) {
  2. return new Formatter().format(format, args).toString();
  3. }

 

3.2 System.out.format方法

该方法内部,也是通过Formatter类进行格式化,然后,将格式化后的字符串直接输出到System.out输出流,其内部代码如下:


 
 
  1. public PrintStream format(String format, Object ... args) {
  2. try {
  3. synchronized ( this) {
  4. ensureOpen();
  5. if ((formatter == null)
  6. || (formatter.locale() != Locale.getDefault()))
  7. formatter = new Formatter((Appendable) this);
  8. formatter.format(Locale.getDefault(), format, args);
  9. }
  10. } catch (InterruptedIOException x) {
  11. Thread.currentThread().interrupt();
  12. } catch (IOException x) {
  13. trouble = true;
  14. }
  15. return this;
  16. }

 



  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值