2016-03-26 6 views
0

PrintWriterを使って"Hello" + var1 + "|" + var2のような多くの文字列をJavaで印刷したいとします。java PrintWriterで文字列を印刷する:連結またはループしますか?

Output.print("Hello" + var1 + "|" + var2); 

OutputPrintWriterインスタンスである:私の最初のオプションのようなものを使用している

。この場合、Javaはすべての項目を連結しなければならず(あるものはStringに変換する必要があるかもしれません)、次にStringパラメーターを渡して書き込みます。私はPrintMsg(Output, "Hello", var1, "|", var2);を呼ぶだろう。この場合

void PrintMsg(PrintWriter Output, String... Msg) { 
    for(String M : Msg) Output.write(M); 
} 

多分それはより効率的にこのようなものになるだろう。連結オーバーヘッドはありませんが、Stringのパラメータでのみ機能します。 var1場合は、var2Stringではありません私が呼び出す必要があります:

PrintMsg(Output, "Hello", var1.toString(), "|", var2.toString()); 

またはこのようなPrintMsg書き換える:

void PrintMsg(PrintWriter Output, Object... Msg) { 
    for(Object M : Msg) Output.write(M.toString()); 
} 

を私はこれを行うための最善の方法がある方法についてのあなたの意見を知りたいのです。 ありがとうございます。

+1

実際に実行する連結がたくさんある場合、私はあなたに 'StringBuilder' –

答えて

0
  1. ループはほぼ確実少し優れています。
  2. これは余計な作業ですが、ご質問の中でこのようなことについて話しているのであれば、ごくわずかです。あなたは実際にそれを観察する前に、非常に小さなパフォーマンスの問題についてあまりにも心配しています。 のループで連結を開始する場合は、少なくとも回の反復を開始すると心配することができます。早期最適化はすべての悪の根源です。このメモでは、この質問に答える理想的な方法は、時間を測定するプログラムを書くことです。それは非常に簡単です。
  3. M.toString()M == nullの場合は例外が発生します。 nullのときに何が起きるか自問自答してください。 に例外をスローしたいかもしれませんが、このケースではちょっと混乱していると思います。 nullを文字列"null"に変換するとしますと、String.valueOf(M)を使用してください。メソッドと変数のための
  4. Javaの命名規則はそうprintMsgoutputmmsg、小文字で始まる、camelCaseです。
  5. https://codereview.stackexchange.com/は、このために特別に調整されているため、この種の質問について検討してください。
0

ループがあるので効率的ではないと思います。実行の面では、ダイレクトプリントにはないループ制御のための命令が追加されるため、実際には悪化する可能性があります。文字列の連結を行うことは余分な作業であるため、

関連する問題