JAVA String.format詳解
阿新 • • 發佈:2019-01-07
1> 常規型別的格式化String類的 format()方法用於建立格式化的字串以及連線多個字串物件,format()方法有兩種過載形式:format(String format, Object... args):新字串使用本地語言環境,制定字串格式和引數生成格式化的新字串format(Locale locale, String format, Object... args):使用指定的語言環境,制定字串格式和引數生成格式化的字串(1) %[index$][標識][最小寬度]轉換方式:格式化字串由4部分組成,其中%[index$]的含義我們上面已經講過,[最小寬度]的含義也很好理解,就是最終該整數轉化的字串最少包含多少位數字(2) %[index$][標識][最少寬度][.精度]轉換方式:浮點數的轉換多了一個“精度”選項,可以控制小數點後面的位數顯示不同轉換符實現不同資料型別到字串的轉換,如下所示:
如:String.format("我的名字是%s,你叫什麼","順子");搭配轉換符的標誌
2> 日期和事件字串格式化%tx轉換符中的x代表另外的處理日期和時間格式的轉換符,它們的組合能夠將日期和時間格式化成多種格式
和日期格式轉換符相比,時間格式的轉換符要更多、更精確。它可以將時間格式化成時、分、秒甚至時毫秒等單位,格式化時間字串的轉換符:
轉換符 | 說明 | 示例 |
%s | 字串型別 | "mingrisoft" |
%c | 字元型別 | 'm' |
%b | 布林型別 | true |
%d | 整數型別(十進位制) | 99 |
%x | 整數型別(十六進位制) | FF |
%o | 整數型別(八進位制) | 77 |
%f | 浮點型別 | 99.99 |
%a | 十六進位制浮點型別 | FF.35AE |
%e | 指數型別 | 9.38e+5 |
%g | 通用浮點型別(f和e型別中較短的) | f123 |
%h | 雜湊碼 | |
%% | 百分比型別 | % |
%n | 換行符 | |
%tx | 日期與時間型別(x代表不同的日期與時間轉換符) |
標誌 | 說明 | 示例 | 結果 |
+ | 結果總是包括一個符號(一般情況下只適用於10進位制,若物件為BigInteger才可以用於8進位制和16進位制) | ("%+d",15) | +15 |
− | 在最小寬度內左對齊,不可以與“用0填充”同時使用 | ("%-5d",15) | |15 | |
0 | 數字前面補0 | ("%04d", 99) | 0099 |
空格 | 正值前加空格,負值前加負號(一般情況下只適用於10進位制,若物件為BigInteger才可以用於8進位制和16進位制) | ("% 4d", 99) | | 99| |
, | 只適用於10進位制,每3位數字之間用“,”分隔 | ("%,f", 9999.99) | 9,999.990000 |
( | 若引數是負數,則結果中不新增負號而是用圓括號把數字括起來(同‘+’具有同樣的限制) | ("%(f", -99.99) | (99.990000) |
# | 只適用於8進位制和16進位制,8進位制時在結果前面增加一個0,16進位制時在結果前面增加0x | ("%#x", 99)("%#o", 99) | 0x630143 |
< | 格式化前一個轉換符所描述的引數 | ("%f和%<3.2f", 99.45) | 99.450000和99.45 |
$ | 被格式化的引數索引 | ("%1$d,%2$s", 99,"abc") | 99,abc |
轉換符 | 說明 | 示例 |
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 |
轉換符 | 說明 | 示例 |
H | 2位數字24時制的小時(不足2位前面補0) | 15 |
I | 2位數字12時制的小時(不足2位前面補0) | 03 |
k | 2位數字24時制的小時(前面不補0) | 15 |
l | 2位數字12時制的小時(前面不補0) | 3 |
M | 2位數字的分鐘(不足2位前面補0) | 03 |
S | 2位數字的秒(不足2位前面補0) | 09 |
L | 3位數字的毫秒(不足3位前面補0) | 015 |
N | 9位數字的毫秒數(不足9位前面補0) | 562000000 |
p | 小寫字母的上午或下午標記 | 中:下午英:pm |
z | 相對於GMT的RFC822時區的偏移量 | +0800 |
Z | 時區縮寫字串 | CST |
s | 1970-1-1 00:00:00 到現在所經過的秒數 | 1193468128 |
Q | 1970-1-1 00:00:00 到現在所經過的毫秒數 | 1193468128984 |