Java 輸出 printf() 方法
❮ 輸出方法
示例
在控制檯列印一些格式化的文字。
字元 %s 是字串 "World" 的佔位符
System.out.printf("Hello %s!", "World");
自己動手試一試 »
注意: 你會在頁面底部找到更多“自己動手”的示例。
定義和用法
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")將是大寫。以下字元可用於日期和時間格式化
H - 小時(24 小時制)的表示(00 到 23)
I - 小時(12 小時制)(01 到 12)
k - 小時(24 小時制)(0 到 23)
l(小寫 'L')- 小時(12 小時制)(1 到 12)
M - 分鐘(帶前導零)(00 到 59)
S - 秒(帶前導零)(00 到 59)(閏秒可能出現 60)
L - 毫秒(帶前導零)(000 到 999)
N - 納秒(帶前導零)(000000000 到 999999999)
p - "am", "pm", "AM" 或 "PM",表示上午或下午
z - 與格林尼治標準時間(GMT)的差值(示例:-0800)
Z - 時區縮寫(示例:EST, MDT)
s - 自 Unix Epoch(1970 年 1 月 1 日 00:00:00 GMT)以來的秒數
Q - 自 Unix Epoch(1970 年 1 月 1 日 00:00:00 GMT)以來的毫秒數
B - 月份的全文字表示(一月到十二月)
b 或 h - 月份的短文字表示(三個字母)
A - 一週中某天的全文字表示(示例:Monday)
a - 一週中某天的短文字表示(示例:Mon)
C - 年份的前兩位數字(對於 1970 年,顯示 "19")
Y - 四位數的年份表示
y - 兩位數的年份表示
j - 一年中的第幾天(帶前導零)(001 到 366)
m - 月份的數字表示(01 到 12)
d - 月中的第幾天(01 到 31)
e - 月中的第幾天(不帶前導零)(1 到 31)
R - 24 小時制的時間(示例:21:30)
T - 帶秒的 24 小時制的時間(示例:21:30:02)
r - 帶秒的 12 小時制的時間(示例:09:30:02 PM)("AM" 和 "PM" 始終是大寫)
D - 日期表示形式(月/日/年)(示例:12/17/23)
F - 日期表示形式(年-月-日)(示例:2023-12-17)
c - 完整日期和時間(示例:Thu Mar 28 10:51:00 EDT 2024)
語法
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 表示資料被表示為浮點數
自己動手試一試 »
示例
使用不同順序的引數
System.out.printf("%3$c %2$c %1$c", 'a', 'b', 'c');
自己動手試一試 »
示例
從 Unix 時間戳格式化日期
long date = 1711638903488L; // Unix timestamp (number of milliseconds since January 1, 1970)
// Time
System.out.printf("%tl:% // Month and day System.out.printf("%tB % // 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); 自己動手試一試 » ❮ 輸出方法 ★ +1 W3schools 學習路徑 跟蹤您的進度 - 免費! 登入 註冊