Javaでのフォーマットの多くの方法がどのように関連しているかを理解する簡単な方法はありますか?私は以下について混乱します:
System.out.printf()
System.out.format()
String.format()
System.console.format()
new Formatter(new StringBuffer("Test")).format();
DecimalFormat.format(value);
NumberFormat.format(value);
上記のクラス/メソッドはとにかく関連していますか?違いを理解し、どの状況でどれを使用するのが最善の方法は何ですか?
例としてSystem.out.printf
、System.out.format
およびはString.format
すべて同じ構文およびフォーマットフラグを使用します。3つすべての違いがわかりません。
ありがとう
ソースとドキュメントを確認することですべての質問に簡単に答えることができるので、対応するJavaバージョンのjavadocsとソースjarをダウンロードすることを検討します。
System.out.printf(formatString, args)
System.out
ですPrintStream
。PrintStream.printf(formatString, args)
は、実際にはへの便利なメソッド呼び出しPrintStream.format(formatString, args);
です。
System.out.format(formatString, args)
これは、PrintStream.format(formatString, args)
を使用しFormatter
て結果をフォーマットし、に追加する呼び出しPrintStream
です。
String.format(formatString, args)
このメソッドもa Formatter
を使用し、フォーマット文字列と引数のフォーマットされた結果を含む新しい文字列を返します。
System.console().format(formatString, args)
System.console()
ですConsole
。Console.format(format, args)
を使用しFormatter
て、フォーマットされた文字列をコンソールに表示します。
new Formatter(new StringBuffer("Test")).format(formatString, args);
これにより、Formatter
渡された文字列バッファを使用してのインスタンスが作成されます。この呼び出しを使用する場合は、out()
メソッドを使用して、Appendable
によって書き込まれるようにする必要がありFormatter
ます。代わりに、次のようなことをしたいかもしれません:
StringBuffer sb = new StringBuffer("Test");
new Formatter(sb).format(formatString, args);
// now do something with sb.toString()
最後に:
DecimalFormat.format(value);
NumberFormat.format(value);
これらは、クラスを使用しない数値の2つのconcreateフォーマッターですFormatter
。DecimalFormat
そして、NumerFormat
どちらもformat
doubleまたはを受け取り、Number
それらのクラスの定義に従って文字列としてフォーマットされたそれらを返すメソッドを持っています。私の知る限り、Formatter
はそれらを使用していません。
お役に立てれば。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加