java.util.Formatter是JDK1.5新增的類,支持相似C中的printf風格的字符串格式化工做html
Formatter有4個構造方法,以下:java
public Formatter()api
public Formatter(Appendable a)oracle
public Formatter(Locale l)ui
public Formatter(Appendable a, Locale l)spa
構造方法主要用於設置Formatter的緩衝器和Locale,默認的狀況下,Formatter使用StringBuilder做爲緩衝器,使用Locale.getDefault()做爲locale。code
Formatter的使用方法以下(摘自JDK DOC):orm
StringBuilder sb = new StringBuilder(); // Send all output to the Appendable object sb Formatter formatter = new Formatter(sb, Locale.US); // Explicit argument indices may be used to re-order output. formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d") // -> " d c b a" // Optional locale as the first argument can be used to get // locale-specific formatting of numbers. The precision and width can be // given to round and align the value. formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E); // -> "e = +2,7183" // The '(' numeric flag may be used to format negative numbers with // parentheses rather than a minus sign. Group separators are // automatically inserted. formatter.format("Amount gained or lost since last statement: $ %(,.2f", balanceDelta); // -> "Amount gained or lost since last statement: $ (6,217.58)"
例子中,先new一個Formatter對象,而後調用Formatter的format方法,這時Formatter內部的緩衝器就儲存了格式化後的字符串,而後能夠用toString方法取出。htm
更爲通常的用法是使用String.format,String.format經過Formatter實現字條串格式對象
public static String format(String format, Object ... args) { return new Formatter().format(format, args).toString(); }
或者在輸出流中使用
System.out.format("Local time: %tT", Calendar.getInstance());
format方法的主要參數分兩部分,格式字符串和可變的格式化參數
格式字符串有一套本身的語法,它由固定文本或者格式描述符組成。描述符的格式以下:
%[argument_index$][flags][width][.precision]conversion
argument_index 是一個整數,代表使用的參數的位置,例如
System.out.format("%d %d", 1, 2); // 輸出 1 2 System.out.format("%1$d %d", 1, 2); // 輸出 1 1
flags 是一組用於修飾輸出的字條
width 是一個非負的整數,用於指定寫到綏中的最小長度
precision 是一個非負整數,通常用於指定數字的精度,依賴conversion
conversion 必須有值,用於指定參數如何轉換
conversion 主要有如下幾組字符(便可以轉換的類型)
's', 'S' 要求參數實現了Formattable,而後調用它的formatTo方法獲得結果
'c', 'C' 字符
'd' 十進制整數
'o' 八進制整數
'x', 'X' 十六進制整數
'e', 'E' 科學計數法浮點數
'f' 浮點數
't', 'T' 時間日期
flags 主要有如下幾種用法
'-' 左對齊
'#' 依賴於conversion,不一樣的conversion,該flag的含義不同
'+' 結果帶正負號
' ' 結果帶前置空格
'0' 若是結果不知足寬度(width 參數)的要求,用0字符填充
',' 數字會按locale用逗號分割
'(' 負數結果會被括號括起
更詳細的資料能夠看JDK文檔
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html