在JDK 1.5中,
MessageFormat.format
和String.format
之间有什么区别?MessageFormat.format
和String.format
之间有什么区别?简单来说,两者的主要区别在于格式化字符串:
MessageFormat.format()
格式化字符串接受参数位置(例如 {0}
、{1}
)。示例:
"今年是 {0}!"
开发人员不必担心参数类型,因为它们通常会根据当前的 Locale
进行识别和格式化。
String.format()
格式化字符串接受参数类型说明符(例如 %d
表示数字,%s
表示字符串)。示例:
"今年是 %d!"
String.format()
通常可以通过很多选项来指定参数的显示方式,因此可以更好地控制参数的显示。例如,格式化字符串 "%-6.2f"
指定要显示一个左对齐的浮点数,最小宽度为6个字符,精度为2位小数。
只需查看这两种方法的 javadoc,以了解更多详细信息。
String.format只是一个快捷方式,用于格式化程序,这是一种“printf风格”的格式化程序。另一方面,MessageFormat使用不同的格式约定,如链接文档中所述。
使用第一个"用于布局对齐和对齐,数字、字符串和日期/时间数据的常见格式以及特定于语言环境的输出"和第二个"以语言中立的方式生成连接消息"。