3.7.2 格式化輸出
阿新 • • 發佈:2018-12-15
可以使用System.out.print(x)將數值x輸出到控制檯上。這條命令將以x對應的資料型別所允許的最大非0數字位數列印輸出x。例如:
double x = 10000.0 / 3;
System.out.println(x); // 3333.3333333333335
Java SE 5.0沿用了C語言庫函式中的printf方法。例如,呼叫
double x = 10000.0 / 3;
System.out.printf("%8.2f",x); // 3333.33
double x1 = 10000000000.0 / 3;
System.out.printf("%8.2f",x1); // 3333333333.33
%8.2f的含義是可以用8個字元的寬度和小數點後兩個字元的精度列印x。也就是說,列印輸出一個空格和7個字元(包括小數點)。當然,如果結果的總位數超過8,還是整數部分按實際展示,小數部分還是隻顯示2位。
在printf中,可以使用多個引數,例如:
System.out.printf("Hello,%s. Next year . you'll be %d", name, age);
Scanner sc = new Scanner(System.in);
System.out.println("請輸入您的姓名");
String name = sc.nextLine();
System.out.println("請輸入您的年齡");
int age = sc.nextInt();
System.out.printf("Hello, %s. Next year . you'll be %d .", name, age);
每一個以%字元開始的格式說明符都用相應的引數替換。
另外,還可以給出控制格式化輸入的各種標誌。例如,逗號標誌增加了分組的分隔符。
註釋:可以使用s轉換符格式化任意的物件。對於任意實現了Formattable介面的物件都將呼叫formatTo方法;否則將呼叫toString方法,它可以將物件轉換為字串。
轉換符 | 型別 | 舉例 |
d | 十進位制整數 | 159 |
x | 十六進位制整數 | 9f |
o | 八進位制整數 | 237 |
f | 定點浮點數 | 15.9 |
e | 指數浮點數 | 1.59e+01 |
g | 通用浮點數 | 1537.00 |
a | 十六進位制浮點數 | 0x1.fccdp3 |
s | 字串 | Hello |
c | 字元 | H |
b | 布林 | True |
h | 雜湊碼 | 42628b2 |
tx或Tx | 日期時間 | 已經過時,應當改為使用java.time類 |
% | 百分號 | % |
n | 與平臺有關的行分隔符 | -- |
標誌 | 目的 | 舉例 |
+ | 列印正數和負數的符號"%+f",e | |
空格 | 在正數之前新增空格"% 10d",e | | 3333.33| |
0 | 數字前面補0"%010d",e | 003333.33 |
- | 左對齊 | |3333.33 | |
( | 將負數括在括號內 | (3333.33) |
, | 新增分組分隔符 | 3,333.33 |
#(對於f格式) | 包含小數點 | 3,333. |
#(對於x或0格式) | 新增字首0x或0 | 0xcafe |
$ | 給定被格式化的引數索引。例如,%1$d, %1$x將以十進位制和十六進位制格式列印第一個引數"%1$x",e | 159 9f |
< | 格式化前面說明的數值,例如,%d%<x以十進位制和十六進位制列印同一個數值"%d %<x",e | 159 9f |