Java 輸出 printf() 方法
注意: 你會在頁面底部找到更多“自己動手”的示例。
定義和用法
printf()
方法輸出一個格式化的字串。
附加引數中的資料被格式化並寫入格式化字串中的佔位符,這些佔位符用 %
符號標記。引數的格式化方式取決於 %
符號後面的字元序列。
佔位符
佔位符的形式為 %[arg$][flags][width][.precision]conversion
。方括號 [ ] 中的部分是可選的。
每個元件的解釋
arg$
- 可選。一個數字後跟一個 $ 符號,表示使用哪個附加引數,引數編號從 1 開始。這可以用<
替換,表示使用前一個佔位符的引數。flags
- 可選。以下任意字元的序列-
- 使輸出左對齊,透過在右側新增填充空格而不是左側。+
- 使正數始終以 "+" 作為字首。0
- 用零填充數字的左側。,
- 對數字進行分組(例如按千位)並在組之間放置分隔符。
width
- 可選。一個整數,指定輸出應占用的最小字元數。如有必要,在右側新增空格以達到此數字,如果使用了-
標誌,則在左側新增空格。.precision
可選。一個.
後跟一個整數,表示在格式化資料中顯示多少個小數位數。conversion
- 必需。一個字元,表示引數的資料應如何表示。如果字元是大寫,則資料將在可能的情況下以大寫格式顯示。可能的字元列表如下表所示。
轉換列表
字元 | 轉換 | 描述 |
---|---|---|
% |
百分比 | 在輸出中顯示字面意義上的 "%" 字元。 |
n |
換行 | 在輸出中顯示換行符。 |
b 或 B |
布林值 | 將布林值引數顯示為 "true" 或 "false"。如果使用 "B",則顯示 "TRUE" 或 "FALSE"。 |
c 或 C |
Unicode 字元 | 顯示引數的 Unicode 字元表示。對於整數,這是與數字對應的 Unicode 字元。如果使用 "C",則字元將在可能的情況下轉換為大寫。 |
s 或 S |
字串 | 顯示引數的預設字串表示。如果使用 "S",則字串將轉換為大寫(在可能的情況下)。 |
d |
十進位制整數 | 將整數表示為十進位制整數。 |
h 或 H |
無符號十六進位制整數 | 將引數的二進位制資料表示為無符號十六進位制整數。如果使用 "H",則 A 到 F 的數字將顯示為大寫。 注意: 對於任何非正整數資料,這並不代表其真實值。 |
o |
八進位制整數 | 將整數表示為八進位制整數。 "#" 標誌將用 "0" 作為字首。 |
x 或 X |
十六進位制整數 | 將整數表示為十六進位制整數。 "#" 標誌將用 "0x" 作為字首。如果使用 "X",則數字 A 到 F 以及字母 X 將以大寫形式顯示。 |
e 或 E |
科學計數法 | 以科學計數法表示浮點數。如果使用 "E",則表示中的字母 "E" 將是大寫。 "#" 標誌將強制顯示小數點,即使沒有小數位數。 |
f |
浮點數 | 表示一個浮點數。 "#" 標誌將強制顯示小數點,即使沒有小數位數。 |
g 或 G |
通用數字 | 顯示浮點數的 f 和 e 或 E 之間最短的表示形式。 |
a 或 A |
十六進位制浮點數 | 以十六進位制數字顯示浮點數的內部表示。 |
t 或 T |
時間和日期 | 顯示格式化的日期或時間。t 或 T 後面必須跟一個額外的字元,指示日期或時間的格式。如果使用 "T",則日期或時間中的文字部分(如 "JANUARY")將是大寫。 以下字元可用於日期和時間格式化
|
語法
System.out.printf(locale, formatString, args)
引數值
引數 | 描述 |
---|---|
locale | 可選。一個用於確定某些格式的區域設定,例如用於小數點和分組分隔符的字元。 |
formatString | 必需。一個包含附加引數佔位符的字串,指示如何格式化它們 |
args | 可選。任意數量的附加引數傳遞給方法,它們的值可以在 *formatString* 中進行格式化和顯示。 |
技術詳情
返回 | 一個 PrintStream 物件。 |
---|---|
丟擲 | IllegalFormatException - 如果格式字串包含無效的佔位符,或者佔位符與引數的資料型別不相容。 |
Java 版本 | 1.5 |
更多示例
示例
列印包含字串和整數的格式化文字
System.out.printf("Hello %s! One kilobyte is %,d bytes.", "World", 1024);
示例
以不同方式格式化浮點數
// Default
System.out.printf("%f%n", 123456.78);
// Two decimal digits
System.out.printf("%.2f%n", 123456.78);
// No decimal digits
System.out.printf("%.0f%n", 123456.78);
// No decimal digits but keep the decimal point
System.out.printf("%#.0f%n", 123456.78);
// Group digits
System.out.printf("%,.2f%n", 123456.78);
// Scientific notation with two digits of precision
System.out.printf("%.2e", 123456.78);
示例
使用所有元件的佔位符
System.out.printf("%2$,3.2f %1$s", "meters", 1260.5052);
這是佔位符 %2$,3.2f
各部分的工作原理
2$
表示使用第二個引數的值,
表示數字應分組(通常按千位)3
表示資料的表示形式應至少為 3 個字元長.2
表示小數點後應有兩位數字f
表示資料被表示為浮點數
示例
從 Unix 時間戳格式化日期
long date = 1711638903488L; // Unix timestamp (number of milliseconds since January 1, 1970)
// Time
System.out.printf("%tl:%<tM %<tp%n", date);
// Month and day
System.out.printf("%tB %<te%n", date);
// Full date representation
System.out.printf("%tc%n", date);
示例
根據 Unicode 程式碼點表示字元
// Represent characters from their unicode code points
System.out.printf("%c%c%c%c%c%n", 72, 101, 108, 108, 111);
// Force unicode characters to uppercase
System.out.printf("%C%C%C%C%C", 72, 101, 108, 108, 111);
❮ 輸出方法