違いは何ですか MessageFormat.format
およびString.format
JDK 1.5で?
簡単に言えば、主な違いはフォーマット文字列です。
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をご覧ください。
String.formatは、 Formatter への単なるショートカットです。これは「printfスタイル」のフォーマッターです。一方、 MessageFormat は、リンクされたドキュメントで説明されているように、異なるフォーマット規則を使用します。
最初の "を使用して、レイアウトの位置調整と位置合わせ、数値、文字列、日付/時刻データの一般的な形式、およびロケール固有の出力"と2番目の "言語に依存しない方法で連結メッセージを作成する"。