JDK 1.5 中的 MessageFormat.format 和 String.format 有什么区别?

2022-08-31 11:22:33

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


答案 1

简而言之,主要区别在于格式字符串:

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

    "This is year {0}!"

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

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

    "This is year %d!"

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

只需看看这两种方法的javadoc,即可找到更多详细信息。


答案 2

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

使用第一个“用于布局对齐和对齐,数字、字符串和日期/时间数据的常见格式以及特定于区域设置的输出”,第二个“以中性语言的方式生成串联消息”。


推荐