Reputation: 8178
What is the difference between MessageFormat.format
and String.format
in JDK 1.5?
Upvotes: 102
Views: 54024
Reputation: 17784
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".
Upvotes: 38
Reputation: 8926
Put simply, the main difference is in format string:
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
.
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.
Upvotes: 124