【发布时间】:2010-05-11 09:55:09
【问题描述】:
JDK 1.5 中的MessageFormat.format 和String.format 有什么区别?
【问题讨论】:
标签: java string-formatting messageformat
JDK 1.5 中的MessageFormat.format 和String.format 有什么区别?
【问题讨论】:
标签: java string-formatting messageformat
简单来说,主要区别在于格式字符串:
MessageFormat.format() 格式字符串接受参数位置(例如{0}、{1})。示例:
"This is year {0}!"
开发人员不必担心参数类型,因为它们通常会根据当前的Locale 进行识别和格式化。
String.format() 格式字符串接受参数类型说明符(例如,%d 用于数字,%s 用于字符串)。示例:
"This is year %d!"
String.format() 通常可以让您更好地控制参数的显示方式,这要归功于您可以使用类型说明符指定的许多选项。例如,格式字符串"%-6.2f" 指定显示一个左对齐的浮点数,最小值为。宽度为 6 个字符,精度为 2 位小数。
只需查看这两种方法的 javadoc 即可了解更多详细信息。
【讨论】:
String.format 只是Formatter 的快捷方式,这是一个“printf 风格”的格式化程序。另一方面,MessageFormat 使用不同的格式约定,如链接文档中所述。
第一个“用于布局对齐和对齐,数字、字符串和日期/时间数据的通用格式,以及特定于区域设置的输出”,第二个“用于生成连接的消息以语言中立的方式”。
【讨论】: