80

JDK 1.5のMessageFormat.formatとの違いは何ですか?String.format

4

2 に答える 2

96

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

  1. MessageFormat.format()フォーマット文字列は、引数の位置を受け入れます (例: {0}, {1})。例:

    "This is year {0}!"

    ほとんどの場合、引数の型は current に従って認識およびフォーマットされるため、開発者は引数の型について心配する必要はありませんLocale

  2. String.format()フォーマット文字列は、引数の型指定子を受け入れます (例:%d数値、%s文字列)。例:

    "This is year %d!"

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

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

于 2013-02-18T14:12:27.167 に答える
30

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

最初の「レイアウトの正当化と配置、数値、文字列、および日付/時刻データの一般的な形式、およびロケール固有の出力」に使用し、2 番目の「言語に依存しない方法で連結メッセージを生成する」に使用します

于 2013-02-18T13:59:51.537 に答える