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