19

学校で本格的な低レベルのプログラミング コースを受講する機会がありませんでした。(私は、より良いプログラマーになるために「舞台裏」を学ぶことを本当に続けなければならないことを知っています。) 私は、System.out.printステートメントに何でも貼り付ける機能を含め、Java の便利さを高く評価しています。System.out.printfしかし、代わりに使用したい理由はありますか?

また、「実際のアプリケーション」でこのような印刷呼び出しを避ける必要がありますか? なんらかの UI 機能を使用して、クライアントのディスプレイにメッセージを出力した方がよいのではないでしょうか。

4

4 に答える 4

30

PrintStreamクラスのprintfメソッドは、Cの関数と同様の文字列フォーマットを提供します。printf

の書式設定printfは、Formatterクラスの書式設定構文を使用します。

このprintfメソッドは、複数の変数を 1 行に表示する場合に特に便利です。これは、文字列の連結を使用すると面倒です。

int a = 10;
int b = 20;

// Tedious string concatenation.
System.out.println("a: " + a + " b: " + b);

// Output using string formatting.
System.out.printf("a: %d b: %d\n", a, b);

printまた、Java アプリケーションを作成することは、必ずしも GUI アプリケーションを作成することを意味するとは限りませprintlnん。printfSystem.out

于 2009-02-14T00:57:31.413 に答える
3

浮動小数点数の精度を制御したり、パディングなどを行う必要がある場合は、より良い方法です。 System.out.print はあらゆる種類のものを出力できますが、精度とパディングを細かく制御することはできません。

于 2009-02-14T00:48:54.757 に答える
3

通常、「実際の」アプリケーションでは、java.util.Logging や commons logging などのロギング システムに書き込みます。これらのシステムには、さまざまなレベルの冗長性を記録する機能があります (つまり、本番環境では無効になる「デバッグ」モード)。 )。ただし、迅速で汚い一時的なデバッグでは、 System.out.println() が最も簡単な方法である場合があります (ランタイム環境が標準出力をどこかにダンプすると仮定すると、それを読むことができます)。

また、いつでも「String.format()」を使用して、フォーマットと可変引数リストを使用して文字列を作成できることにも言及する必要があります (次に、この文字列をロギング メソッドまたは System.out.println に渡します)。これは多くの場合、一連の変数を文字列に連結するよりも優れています。

于 2009-02-14T00:49:47.033 に答える
2

ほとんどの実際のプログラムでは、ロギングが使用されます。デバッグ メッセージは、ロギング構成を介してオン/オフにすることができます。例として log4j を参照してください。

于 2009-02-14T08:06:23.053 に答える