jdk1.5中MessageFormat.format和String.format之间的区别?

时间:2010-05-11 09:55:10

标签: java string-formatting messageformat

JDK 1.5中MessageFormat.formatString.format之间有什么区别?

2 个答案:

答案 0 :(得分:67)

简单来说,主要区别在于格式字符串:

  1. MessageFormat.format()格式字符串接受参数位置(例如{0}{1})。例如:

    "This is year {0}!"

    开发人员不必担心参数类型,因为它们通常根据当前Locale进行识别和格式化。

  2. String.format()格式字符串接受参数类型说明符(例如,%d表示数字,%s表示字符串)。示例:

    "This is year %d!"

    String.format()通常可以让您更好地控制参数的显示方式,这要归功于您可以使用类型说明符指定的许多选项。例如,格式字符串"%-6.2f"指定显示带有min的左对齐浮点数。宽度为6个字符,精度为2位小数。

  3. 只需查看两种方法的javadoc即可了解更多详情。

答案 1 :(得分:21)

String.format只是Formatter的快捷方式,这是一个“printf风格”的格式化程序。另一方面,MessageFormat使用不同的格式约定,如链接文档中所述。

使用第一个“进行布局对齐和对齐,使用数字,字符串和日期/时间数据的常用格式,使用特定于语言环境的输出”和第二个“来生成连续的消息用语言中立的方式“