J2SE 1.4 版原来的计划是包括对格式化输出的支持。可能由于时间限制及这个功能对新版本的发布不起决定作用的缘故,在发表的版本中没有加入这些功能。现在有了 Tiger,对打印带格式的字符串有了内在支持。
对于那些从一开始就使用 Java 编程而从没有接触过 C 的人,或者,对那些对 C 没有足够了解的人,格式化字符串是一些古怪的文本串,它们指定一组变量的输出特性。不是用加号将字符串连接在一起(如 firstName + " " + lastName ),而是提供一个字符串描述输出,并提供参数以在方法调用结束时,替换字符串中的占位符: String s = String.format("%1$s %2$s", firstName, lastName) 。
Formatter 类
首先,让我们分析新的 java.util.Formatter 类。您可能不会经常直接使用这个类,但是它提供了所要进行的格式化的内部机制。在这个类的 Javadoc 中,会看到一个描述所支持的格式化选项的表。这些选项的范围从以类似 %7.4f 这样的格式指定浮点数的精度和位数,到格式化时间的 %tT ,到格式化第三个参数 %3$s 。
用 Formatter 格式化输出分为两步:创建一个 Appendable 对象以存储输出,用 format() 方法将带格式的内容放到这个对象中。下面列出了 Appendable 接口的实现器:
BufferedWriter
CharArrayWriter
CharBuffer
FileWriter
FilterWriter
LogStream
OutputStreamWriter
PipedWriter
PrintStream
PrintWriter
StringBuffer
StringBuilder
StringWriter
Writer