From Gossip@Openhome

Java Gossip:  Console 輸出格式控制  

標準輸出通常是文字模式為主的主控台(終端機),這邊介紹幾個格式控制技巧,在主控台顯示時可以協助輸出的顯示格式。

首先介紹格式字元控制,先表列一些常用的控制字元:

\\ 反斜線
\' 單引號 '
\" 雙引號 "
\uxxxx 以16 進位數指定Unicode字元輸出
\dxxx 以8進 位數指定Unicode字元輸出
\b 倒退一 個字元
\f 換頁
\n 換行
\r 游標移 至行首
\t 跳格 (一個Tab鍵)



下面這段程式告訴您如何指定字元編碼來輸出"Hello"這段文字:
System.out.println("\u0048\u0065\u006C\u006C\u006F");

在輸出數值時,預設都會以十進位的方式來顯示數值,下面這幾段程式可以讓您分別以不同進位制來顯示數值:
int x = 19;
 // 轉成二進位 10011
System.out.println(Integer.toBinaryString(x));
 // 轉成十六進位 13
System.out.println(Integer.toHexString(x));
 // 轉成八進位 23
System.out.println(Integer.toOctalString(x));

J2SE 5.0 中,您可以使用 System.out.printf() 作簡單的輸出格式設定,例如:
// 輸出 19 的十進位表示
System.out.printf("%d%n", 19);
// 輸出 19 的八進位表示
System.out.printf("%o%n", 19);
// 輸出 19 的十六進位表示
System.out.printf("%x%n", 19);

'%d'表示將指定的數值以 十進位表示,'%o'是八進 位表示,而'%x'是十六進位表示,'%n'是 指輸出平台特定的換行字元,如果是在Windows下實際上會置換為 '/r/n',如果是 Linux下則會置換為'/n'

下表簡單列出了一些常用的轉換符號:

%% 在字串 中顯示%
%d 以10 進位整數方式輸出,提供的數必須是Byte、 Short、 Integer、Long、或BigInteger
%f 將浮點 數以10進位方式輸出,提供的數必須是Float、 Double或 BigDecimal
%e, %E 將浮點 數以10進位方式輸出,並使用科學記號,提供的數必須是 Float、 Double或BigDecimal
%a, %A 使用科 學記號輸出浮點數,以16進位輸出整數部份,以10進位 輸出指數部份, 提供的數必須是Float、Double、BigDecimal
%o 以8進 位整數方式輸出,提供的數必須是Byte、Short、 Integer、Long、或BigInteger
%x, %X 將整 數以16進位方式輸出,提供的數必須是Byte、 Short、 Integer、Long、或BigInteger
%s, %S 將字串 格式化輸出
%c, %C 以字元 方式輸出,提供的數必須是Byte、Short、 Character或 Integer
%b, %B 將"true" 或"false"輸出(或"TRUE"、 "FALSE",使用 %B)。另外,非null值輸出是"true",null值輸出是"false"
%t, %T 輸出日 期/時間的前置,詳請看線上API文件















您可以在輸出浮點數時指定精度,例如:
System.out.printf("example:%.2f%n", 19.234);

執行結果會輸出:
example:19.23

您也可以指定輸出時,至少要預留的字元寬度,例如:
System.out.printf("example:%6.2f%n", 19.234);

由於預留了6個字元寬度,不足的部份要由空白字元補上,所以執行結果會輸出如下(19.23只佔五個字元,所以補上一個空白在前端):
example: 19.23

以上只是簡短的列出一些常用的輸出轉換符號,事實上,這些功能都是由 java.util.Formatter 所提供的,如果您需要更多關於輸出格式的控制,您可以看看線上API文件以查詢相關設定。