web-dev-qa-db-ja.com

jdk1.5のMessageFormat.formatとString.formatの違いは?

違いは何ですか MessageFormat.formatおよびString.format JDK 1.5で?

59
kedar kamthe

簡単に言えば、主な違いはフォーマット文字列です。

  1. MessageFormat.format()形式文字列は引数の位置を受け入れます(例__{0}_、_{1}_)。例:

    _"This is year {0}!"_

    開発者は引数の型を心配する必要はありません。引数の型は、ほとんどの場合、現在のLocaleに従って認識され、フォーマットされるためです。

  2. String.format()フォーマット文字列は、引数タイプ指定子を受け入れます(例えば、数値の場合は_%d_、文字列の場合は_%s_)。例:

    _"This is year %d!"_

    String.format()は一般に、型指定子で指定できる多くのオプションのおかげで、引数の表示方法をはるかに制御できます。たとえば、フォーマット文字列_"%-6.2f"_は、左揃えの浮動小数点数をminで表示することを指定します。幅6文字、小数点以下2桁の精度。

詳細については、両方のメソッドのjavadocをご覧ください。

73
Adam Dyga

String.formatは、 Formatter への単なるショートカットです。これは「printfスタイル」のフォーマッターです。一方、 MessageFormat は、リンクされたドキュメントで説明されているように、異なるフォーマット規則を使用します。

最初の "を使用して、レイアウトの位置調整と位置合わせ、数値、文字列、日付/時刻データの一般的な形式、およびロケール固有の出力"と2番目の "言語に依存しない方法で連結メッセージを作成する"

21
lbalazscs