快速上手java.util.Formatter 类,(实例教程)

     因为工作需要,前段时间有用到java.util.Formatter类,  因为关于此类的api文档 可能会有一些难度,所以在这里用自己的方式给大家讲解一番,希望大家能快速上手。

    Q. 为什么要用到此类:

           A:此类提供了对布局对齐和排列的支持,以及对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持。

                 通俗一点说就是  控制 输出文本的 格式。

1、产生格式化输出的每个方法都需要“格式字符串” 和 “参数列表”

         格式字符串是一个 String,它可以包含固定文本以及一个或多个嵌入的 “格式说明符。”

格式说明符的语法如下:

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

可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。

可选的 flags 是修改输出格式的  字符集 。有效标志的集合取决于转换类型。

可选 width 是一个 非负十进制整数,表明要向输出中写入的最少字符数。

可选 precision 是一个非负十进制整数, 通常用来限制字符数。特定行为取决于转换类型。

所需的 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集合取决于参数的数据类型。

 

实例:

  

  1. package test;  
  2.   
  3. import java.util.Calendar;  
  4. import java.util.Formatter;  
  5. import java.util.Locale;  
  6.   
  7. public class JavaApiDemo {  
  8.   
  9.     /** 
  10.      * @param args 
  11.      */  
  12.     public static void main(String[] args) {  
  13.         // TODO Auto-generated method stub  
  14.         StringBuilder sb = new StringBuilder();  
  15.         // Send all output to the Appendable object sb(将所有的 输出 发送到附加对象 sb )  
  16.         /** Formatter(Appendable a, Locale l)  
  17.             构造一个带指定目标文件和语言环境的新 formatter。*/  
  18.         Formatter formatter = new Formatter(sb, Locale.US);  
  19.   
  20.         // Explicit(详述的,明确的) argument indices(index的复数形式) may be used to re-order output.  
  21.         /** 
  22.          * 明确的 “参数索引”(eg. agurment_index$) 可以用来对  输出文本(参数列表)  进行排序 
  23.          */  
  24.         formatter.format("%4$2s %3$2s %2$2s %1$2s""a""b""c""d");  
  25.         // -> " d  c  b  a"  
  26.   
  27.         // Optional locale as the first argument can be used to get  
  28.         // locale-specific formatting of numbers. The precision(精度) and width can be  
  29.         // given to round and align the value.  
  30.         /** 
  31.          * 可选的local参数作为第一个参数 可以去 获取(或设定) 区域设置特定的数字格式 
  32.          * 精度和宽度的设定 可以 全面对其所要输出的格式 
  33.          */  
  34.         formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);  
  35.         System.out.println(sb.toString());  
  36.           
  37.         // Writes a formatted string to System.out.  
  38.            System.out.format("Local time: %tT", Calendar.getInstance());  
  39.            // -> "Local time: 13:34:18"  
  40.   
  41.     }  
  42.   
  43. }  

 

 

 解释:Formatter formatter = new Formatter(sb,Locale.US)  //构造一个带指定目标文件和语言环境的新 formatter,  所有的输出 将 发送 到 sb 对象中,  

          formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d ")  //  "%4$2s %3$2s %2$2s %1$2s"  是 “格式字符串”,后面的 是参数列表,

含 a ,b , c ,d  四个参数 ,%4$2s  表示的意思是 4$:第四个参数, 2:最少输出两个字符,s:按照字符串的格式输出目标字符  。

              语法对照:   %[argument_index$][flags][width][.precision]conversion

像那个flags 参数 啊 ,是表示 控制 输出格式的 字符集,可以参照api文档的 《标志》 部分。

 eg.

'-'y y y y y 结果将是左对齐的。   

width 和 .precision  就不多说了,

 conversion  控制输出的 格式 语法,可以参考api文档的 《转换》 部分。

eg

'd'整数 结果被格式化为十进制整数

     System.out.format("将参数列表当中的十进制整数转换成十六进制:29转换成十六进制之后的值:%1$x", 29);

控制台输出 将参数列表当中的十进制整数转换成十六进制:29转换成十六进制之后的值 1d

 原文:http://blog.csdn.net/wangqiang_lenovo/article/details/6042952


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值