。
System.out.printf(formatString, args)
System.out
は、PrintStream
です。 PrintStream.printf(formatString, args)
は、実際にはPrintStream.format(formatString, args);
の便利なメソッド呼び出しです。
System.out.format(formatString, args)
これは、結果をフォーマットし、PrintStream
にそれらを追加するFormatter
を使用していますPrintStream.format(formatString, args)
の呼び出しです。
String.format(formatString, args)
この方法はまた、Formatter
を使用して書式文字列と引数のフォーマットされた結果を使用して新しい文字列を返します。
System.console().format(formatString, args)
System.console()
Console
です。 Console.format(format, args)
はFormatter
を使用して、書式設定された文字列をコンソールに表示します。
new Formatter(new StringBuffer("Test")).format(formatString, args);
これは、渡された文字列バッファを使用してFormatter
のインスタンスを作成します。あなたは、この呼び出しを使用する場合は、あなたがFormatter
によって書き込まAppendable
を取得するためにout()
メソッドを使用する必要があります。最後に
StringBuffer sb = new StringBuffer("Test");
new Formatter(sb).format(formatString, args);
// now do something with sb.toString()
:代わりにあなたのような何かをしたいかもしれません
DecimalFormat.format(value);
NumberFormat.format(value);
これらはないがFormatter
クラスを使用しない番号には2つの具象のフォーマッタです。 DecimalFormat
とNumerFormat
は両方ともメソッドを持ち、doubleまたはNumber
を取り、それらのクラスの定義に従って文字列として書式設定します。私が知る限り、Formatter
はそれらを使用していません。
これが役に立ちます。
「Formatter」機能を包み込む便利な方法です。 ( 'NumberFormat'とそのサブクラスがどのように関係しているのかは分かりません) –
@Daveしかし、まだ' PrintStream.format'と 'PrintStream.printf' - afaik同じリリースで追加され、同じ機能を持っています。'printf(format、args)という形式のこのメソッドの呼び出しは、out.format(format、args)'の呼び出しとまったく同じように動作します。実際には奇妙なdublicationは – Voo
@Voo誰かが 'print' /' println'などと並んで 'format'機能をもっと保つために' printf'を追加したと思いますが、それは単なる推測です。ほとんどのAPIは、さまざまな理由でさまざまな理由で重複しています。異なるスタイルを使用したり、インテントを異ならせたりします。 –