标准输出通常是文字模式为主的主控台(终端机),这边介绍几个格式控制技巧,在主控台显示时可以协助输出的显示格式。
首先介绍格式字符控制,先表列一些常用的控制字符:
\\ | 反斜线 |
\' | 单引号 ' |
\" | 双引号 " |
\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文件以查询相关设定。