Разница между MessageFormat.format и String.format в jdk1.5? - PullRequest
56 голосов
/ 11 мая 2010

В чем разница между MessageFormat.format и String.format в JDK 1.5?

Ответы [ 2 ]

70 голосов
/ 18 февраля 2013

Проще говоря, основное отличие заключается в формате строки:

  1. MessageFormat.format() строка формата принимает позиции аргументов (например, {0}, {1}). Пример:

    "This is year {0}!"

    Разработчику не нужно беспокоиться о типах аргументов, поскольку они чаще всего распознаются и форматируются в соответствии с текущим Locale.

  2. String.format() строка формата принимает спецификаторы типа аргумента (например, %d для чисел, %s для строк). Пример:

    "This is year %d!"

    String.format() обычно дает вам гораздо больше контроля над отображением аргумента благодаря множеству опций, которые вы можете указать с помощью спецификатора типа. Например, строка формата "%-6.2f" указывает на отображение выровненного по левому краю числа с плавающей запятой с мин. ширина 6 символов и точность 2 знака после запятой.

Просто взгляните на javadoc обоих методов, чтобы узнать больше.

21 голосов
/ 18 февраля 2013

String.format - это просто ярлык для Formatter , это форматтер "printf-style". С другой стороны, MessageFormat использует другое соглашение о форматировании, как описано в связанной документации.

Используйте первый "для выравнивания и выравнивания макета, общие форматы для числовых, строковых данных и данных даты / времени, а также вывод для конкретной локали" и второй "для создания объединенных сообщений в не зависящий от языка способ ".

...