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

JDK 1.5中的MessageFormat.formatString.format什么区别?

简而言之,主要区别在于格式string:

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

    "This is year {0}!"

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

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

    "This is year %d!"

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

只要看看这两种方法的javadoc来了解更多细节。

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

使用第一个“用于布局alignment和alignment,数字,string和date/时间数据以及特定 于语言 环境的输出的常用格式” ,第二个“以与语言无关的方式生成连接的消息”