Java学习笔记(七)--格式化字符串及格式输出
一、格式化字符串
String 類的靜態 format() 方法用于創建格式化的字符串。
1、format(String format, Object···args)
該方法使用指定的格式字符串和參數返回一個格式化字符串,格式化后的新字符串使用本地默認的語言環境(可用 Locale.getDefault() 方法查看本地語言環境)。
str1 = str.format(String format, Object···args);- format:格式字符串。
- args:格式字符串中由格式說明符引用的參數。如果還有格式說明符以外的參數,則忽略這些額外的參數。此參數的數目是可變的,可以為0。
2、format(Local l, String format, Object···args)
str1 = str.format(Local l, String format, Object···args)- l:格式化過程中要應用的語言環境。如果 l 為 null,則不進行本地化。
- format:格式化字符串。
- args:格式字符串中由格式說明符引用的參數。如果還有格式說明符以外的參數,則忽略這些額外的參數。此參數的數目是可變的,可以為0。
下面是一個例子演示圖片:
1.1 日期和時間字符串格式化
format() 方法通過給定的特殊轉換符作為參數來實現對日期和時間的格式化。
1.1.1 日期格式化
實例:在項目中創建類GetDate。
代碼及運行結果圖片:
1.1.2 時間格式化
format() 方法可實現Date對象時間的格式化。
1.1.3 格式化常見的日期時間組合
Date對象的格式化日期和時間轉換符定義了各種日期和時間組合的格式。
1.2 常規類型格式化
常規類型的格式化可應用于任何參數類型。
String 類的靜態方法 format() 用來創建可復用的格式化字符串,實現不同數據類型到字符串的轉換。
二、格式化控制臺輸出
輸出格式化數字可以使用 printf() 和 format() 方法。
使用 System.out.printf() 方法在控制臺上顯示格式化輸出。
System.out.printf(format, item1, item2, ..., itemn);這里的 format 是指一個由子串和格式說明符構成的字符串。格式說明符指定每個條目應該如何顯示。這里的條目可以是數值、字符、布爾值或字符串。簡單的格式說明符是以百分號 (%) 開頭的轉換碼。
2.1 用于 printf 的轉換符
| d | 十進制整數 | 159 |
| x | 十六進制整數 | 9f |
| o | 八進制整數 | 237 |
| f | 定點浮點數 | 15.9 |
| e | 指數浮點數 | 1.59e+01 |
| g | 通用浮點數 | - |
| a | 十六進制浮點數 | 0x1.fccdp3 |
| s | 字符串 | Hello |
| c | 字符 | H |
| b | 布爾 | True |
| h | 散列碼 | 42628b2 |
| tx | 日期時間 | x見下 |
| % | 百分號 | % |
| n | 與平臺有關的行分隔符 | - |
2.2 用于 printf 的標志
| + | 打印正數和負數的符號 | +3333.33 |
| 空格 | 在正數之前添加空格 | | 3333.33| |
| 0 | 數字前面補0 | 003333.33 |
| - | 左對齊 | |3333.33 | |
| ( | 將負數括在括號內 | (3333.33) |
| , | 添加分組分隔符 | 3,333.33 |
| #(對于f格式) | 包含小數點 | 3333.33 |
| #(對于x或0格式) | 添加前綴0x或0 | 0xcafe |
| $ | 給定被格式化的參數索引。如%1$d將以十進制打印第一個參數 | 159 9F |
| < | 格式化前面說明的數值。如%d%<x以十進制和十六進制打印同一個數值 | 159 9F |
2.3 時間和日期的轉換符
在這里,使用以 t 開始,格式為 tx,x代表的內容如下表:
| c | 完整的日期和時間 | 周日 4月 19 11:51:37 CST 2020 |
| F | ISO 8601 日期 | 2020-04-19 |
| D | 美國格式的日期(月/日/年) | 04/19/20 |
| T | 24小時時間 | 11:56:27 |
| r | 12小時時間 | 11:57:05 上午 |
| R | 24小時時間沒有秒 | 11:56 |
| Y | 4位數字的年 | 2020 |
| y | 年的后兩位數字 | 20 |
| C | 年的前兩位數字 | 20 |
| B | 月的完整拼寫 | February |
| b或h | 月的縮寫 | Feb |
| m | 兩位數字的月 | 04 |
| d | 兩位數字的日(前面補0) | 09 |
| e | 兩位數字的日(前面不補0) | 9 |
| A | 星期幾的完整拼寫 | Monday |
| a | 星期幾的縮寫 | Mon |
| j | 三位數的年中的日子(前面補0),在001到366之間 | 069 |
| H | 兩位數字的小時(前面補0),0到23之間 | 12 |
| k | 兩位數字的小時(前面不補0),0到23之間 | 12 |
| I(i的大寫) | 兩位數字的小時(前面補0),0到12之間 | 06 |
| l(L的小寫) | 兩位數字的小時(前面不補0),0到12之間 | 6 |
| M | 兩位數字的分鐘(前面補0) | 05 |
| S | 兩位數字的秒(前面補0) | 19 |
| L | 三位數字的毫秒(前面補0) | 047 |
| N | 九位數字的毫微秒(前面補0) | 020000000 |
| P | 上午或下午的大寫標志 | PM |
| p | 上午或下午的小寫標志 | am |
| z | 從GMT起,RFC822數字位移 | +0800 |
| Z | 時區 | CST |
| s | 從格林威治時間1970-01-01 00:00:00 起的秒數 | 1587270316 |
| Q | 從格林威治時間1970-01-01 00:00:00 起的毫秒數 | 1587270331450 |
2.4 使用參數索引格式化輸出日期
Date date = new Date();System.out.printf("%1$s %2$tB%2$te日, %2$tY","data:",date); //輸出結果為 data: 四月19日, 2020索引必須緊跟在%后面,并以$終止。參數索引值從1開始,而不是從0開始。
同樣還可以使用 < 標志。它指示前面格式說明中的參數將再次使用。
System.out.printf("%s %tB%<te日, %<tY","data:",date);2.5 指定寬度和精度
| %5c | 輸出字符并在這個字符條目前面加4個空格 |
| %6b | 輸出布爾值,在false值前加一個空格,在true值前加兩個空格 |
| %5d | 輸出整個條目,寬度至少為5.如果該條目的數字位數小于5,就在數字前面加空格.如果該條目的位數大于5,則自動增加寬度 |
| %10.2f | 輸出的浮點條目寬度至少為10,包括小數點、和小數點后兩位數字.這樣,給小數點前分配了7位數字. 如果該條目小數點前的位數小于7,就在數字前面加空格. 如果該條目小數點前的位數大于7,則自動增加寬度. |
| %10.2e | 輸出的浮點條目的寬度至少為10,包括小數點、小數點后面兩位數字和指數部分.如果按科學計數法顯示的數字位數小于10,就給數字前加空格 |
| %12s | 輸出的字符串至少為12個字符.如果該字符串條目小于12個字符,就在該字符串前加空格.如果該字符串條目多余12個字符,則自動增加寬度 |
例子
public class PrintfDemo {public static void main(String[] args) {System.out.printf("%5.6f",12345678.12345678);System.out.println();System.out.printf("%8.4f",1.12);System.out.println();System.out.printf("%-8.4f",1.12);} } /*輸出: 12345678.1234571.1200 1.1200 */總結
以上是生活随笔為你收集整理的Java学习笔记(七)--格式化字符串及格式输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java学习笔记(六)--字符串Stri
- 下一篇: java美元兑换,(Java实现) 美元