2.12 使用Formatter(格式化程序)格式化字符串
![]()
如果你以前曾使用C或C++编程,当转为使用Java时你是否不再使用printf函数?我就是这样,最终转向Java并开始喜欢上一节介绍过的Java的MessageFormat(如果不了解printf的概念或作用,那么在学习它的复杂用法之前请跳过本节)。MessageFormat类提供的功能本质上与Formatter相同,但是它采用一种更容易理解的格式。注意不要将这两个类混淆。
在Java 5中, printf又出现了,但已作为另一种格式化文本的方法。对于“使用C的人”而言,新的java.util.Formatter类提供了与printf相同的功能(和语法)。String和java.io.PrintStream类还提供了使用Formatter来产生输出的简便方法。这些新的方法使用一个格式化String和一个参数列表以便输出一个格式化的字符串。下面给出一个简短的示例,它从一个Date对象中提取小时和分钟然后输出到System.out:
Date now = new Date();
System.out.format("The time is %tI:%tM", now, now);
其中,“%tI”显示小时(12小时制时钟),而“%tM”显示出分钟。格式化字符串非常类似于printf的功能,Formatter文档非常细致地定义了它的语法。格式化String与C的printf并不完全相同,但是它们有相似之处并且有时有助于移植包含大量printf代码的应用程序。如果深爱printf并且不能完全放弃C,那么肯定会使用格式化字符串。对于很多Java编程人员而言此格式化字符串的语法较难,因此必须谨慎地使用它。
参考资料:
Java 5的文档提供了一些例子来说明Formatter的格式化String的语法。







