Разница между MessageFormat.format и String.format в jdk1.5?

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

Ответ 1

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

  • <строкa >

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

"This is year {0}!"

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

Строка формата

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

"This is year %d!"

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

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

Ответ 2

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

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