在JavaSe5中,推出了C语言中printf()风格的格式化输出。这不仅使得控制输出的代码更加简单,同时也给与Java开发者对于输出格式与排列更大的控制能力。今天,我们开始学习Java中的格式化输出。
System.out.format()
由于内容比较简单,我们通过实例来加以说明。项目结构如下:
Java Se5引入的format方法可用于PrintStream或PrintWriter对象,其中也包括System.out对象。
package com.tomhu.format;
public class FormatTest1 {
public static void main(String[] args) {
int x = 5;
double y = 3.141592;
// 一般方式
System.out.println("x = " + x + ", y = " + y);
// printf()方式
System.out.printf("x = %d, y = %f\n", x, y);
// format()方式
System.out.format("x = %d, y = %f\n", x, y);
}
}
输出的结果如下:
x = 5, y = 3.141592
x = 5, y = 3.141592
x = 5, y = 3.141592
可以看到,format与printf是等价的,它们只需要一个简单的格式化字符串,加上一串参数即可,每个参数对应一个格式修饰符。
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
在format的具体代码中,其实就是调用Formatter的format方法:formatter.format(Locale.getDefault(), format, args);
public PrintStream format(String format, Object ... args) {
try {
synchronized (this) {
ensureOpen();
if ((formatter == null)