В чем разница между MessageFormat.format
и String.format
в JDK 1.5?
Разница между MessageFormat.format и String.format в jdk1.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 использует другое соглашение о форматировании, как описано в связанной документации.
Использовать первый "для выравнивания и выравнивания макета, общие форматы для числовых, строковых и данных даты/времени и выходных данных, зависящих от локали", а второй "для создания конкатенированных сообщений нейтральным языком".