What is the difference between MessageFormat.format and String.format in JDK 1.5?

JavaString FormattingMessageformat

Java Problem Overview


What is the difference between MessageFormat.format and String.format in JDK 1.5?

Java Solutions


Solution 1 - Java

Put simply, the main difference is in format string:

  1. MessageFormat.format() format string accepts argument positions (eg. {0}, {1}). Example:

    "This is year {0}!"

The developer doesn't have to worry about argument types, because they are, most often, recognized and formated according to current Locale.

  1. String.format() format string accepts argument type specifiers (eg. %d for numbers, %s for strings). Example:

    "This is year %d!"

String.format() generally gives you much more control over how the argument is displayed thanks to many options you can specify with the type specifier. For instance, format string "%-6.2f" specifies to display a left-aligned floating point number with min. width 6 chars and precision of 2 decimal places.

Just have a look at javadoc of both methods to find out more details.

Solution 2 - Java

String.format is just a shortcut to Formatter, this is a "printf-style" formatter. On the other side, MessageFormat uses a different formatting convention, as described in the linked documentation.

Use the first "for layout justification and alignment, common formats for numeric, string, and date/time data, and locale-specific output" and the second "to produce concatenated messages in language-neutral way".

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionkedar kamtheView Question on Stackoverflow
Solution 1 - JavaAdam DygaView Answer on Stackoverflow
Solution 2 - JavalbalazscsView Answer on Stackoverflow