我们先来看下API文档中关于此方法的说明:
format
public static String format(Locale l, String format, Object... args)
- 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
- 参数:
l
- 格式化过程中要应用的语言环境。如果 l 为 null,则不进行本地化。format
- 格式字符串args
- 格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。参数的数目是可变的,可以为 0。参数的最大数目受 Java Virtual Machine Specification 所定义的 Java 数组最大维度的限制。有关 null 参数的行为依赖于转换。- 返回:
- 一个格式化字符串
- 抛出:
IllegalFormatException
- 如果格式字符串中包含非法语法、与给定参数不兼容的格式说明符,格式字符串给定的参数不够,或存在其他非法条件。有关所有可能的格式化错误的规范,请参阅 formatter 类规范的详细信息 一节。NullPointerException
- 如果 format 为 null
我觉得,比较重要的是后两个参数,即String format和Object...args。这个String format代表的就是格式字符串。格式字符串:产生格式化输出的每个方法都需要格式字符串和参数列表。格式字符串是一个String, 它可以包含固定文本和一个或多个嵌入的格式说明符。以我之前发的一个JSF自定义组件中的例子来说明。
String utput = String.format("It is now %tr on %tD.", currentDateTime, currentDateTime);
这里,"It is now %tr on %tD."就是一个格式字符串。这句代码包含了两个参数,两个参数都是currentDateTime。如何确定它们的位置呢?就是在格式字符串里面,%tr, %tD确定的。与%紧连着的的字符是说明应该如何格式化参数的字符。这里,t代表日期时间转换的前缀,r和D分别表示将时间和日期按一定格式输出。这里我们使用参数时使用的是一种默认方法。第一个%会寻找格式字符串后面的第一个参数,第二个%会寻找第二个参数,依此类推。
使用该方法有一个好处是可以在java文件中向页面写带有参数的html标签,这在JSF自定义输入标签中常用。例如:
String utput = String.format("<input type='text' name='%s' value='%s' >", name, value);
这里,我们就像页面写了一个html的文本输入标签。它的name属性由格式字符串后面的第一个参数name确定,value属性由第二个参数value确定。%s可以理解为参数为字符串对象。
关于格式字符串具体的资料,还请查阅相关文档。