Ada*_*yga 76

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

  1. MessageFormat.format()format string接受参数位置(例如{0},{1}).例:

    "This is year {0}!"

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

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

    "This is year %d!"

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

只需查看两种方法的javadoc即可了解更多详细信息.

  • 您可以稍微控制MessageFormat.format中的格式,即:"{0,number,integer}". (4认同)
  • 格式字符串还支持位置参数(例如“%2$s”将第二个参数格式化为字符串)。 (3认同)

lba*_*scs 21

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

使用第一个"用于布局对齐和对齐,数字,字符串和日期/时间数据的常用格式,以及特定于语言环境的输出",第二个用"以语言中立的方式生成连接的消息".