Formatter 作用
Formatter 對象主要是把JAVA中的字符串、基本類型及其包裝對象格式化成字符串,當然也可以用來格式時間輸出。常見的System.out.printf, String.format 都是調用Formatter實現字符串格式化。
Formatter 使用例子
格式化輸出如下代碼:
輸出結果:
Formatter 語法
format 語法:
%[argument_index$][flags][width][.precision]conversion
語法說明:
1,% :百分號為固定開頭。
2,argument_index$ :代碼格式化第幾個參數,參數從1開始。
3,flags : 可以控制輸出的一些標志,比如 "-" 表示左對齊,默認是右對齊。
4, width : 該區域輸出的最小寬度。比如10,表示該區域固定10個字符長度,小于10個字符的會用空格補齊。
5,.precision : 輸出精度,如果是字符串,則表示最大輸出字符串長度,超過會被截取。如果是浮點類型,則表示小數點的精度。
6,conversion : 格式化類型,比如s:表示字符串,d:表示整數,f:表示浮點數,t:表示時間等。
注意:不同的conversion類型,語法會有略不同。比如時間類型沒有[.precision]參數。
Formatter Conversion 支持列表
- 'b' : boolean 類型
- 'h' : 參數對象hashcode 轉成十六進制輸出
- 's' : 字符串
- 'c' : 字符
- 'd' : 十進制數字
- 'o' : 八進制數字
- 'x' : 十六進制數字
- 'e' : 科學計數法輸出浮點數類型
- 'f' : 浮點數類型
- 'g' : 浮點類型以科學計數法或者十進制數字輸出,就是 e,f 的結合。
- 'a' : 浮點類型以十六進制輸出
- 't' : 格式化時間類型
- '%' : 輸出百分號 %
- 'n' : 輸出換行符
Formatter 使用例子詳解
printf("%1$-10.10s %2$10s%n","Name","Age");
1,%1$-10.10s :
1%: 表示使用第一個參數即 "Name"。
-: 表示左對齊。
10: 表示固定寬度。
.10: 表示最大輸出10個字符,多余被截取。
s: 表示字符串格式類型。
2,%2$10s:
2$: 表示使用第二個參數,即"Age"。
10: 表示固定寬度。
s: 表示字符串格式化類型。
3,%n
n: 表示換行
總結
掌握字符串,整數,浮點數常用格式化,在編程中基本都夠用。雖然Formatter 也能格式化時間,但建議還是使用時間專用的格式化類比較好。