私のサーブレットでは、out.print
とout.write
の両方を指定しました。しかし、両方ともブラウザで印刷されます。
これら2つの正確な違いと、いつout.print
とout.write
を使用するか
基本的な違いは、nullを渡すとout.write()
が爆発することです。
String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException
public void write(String s)
文字列を書きます。このメソッドは、I/O例外を抑制する必要があるため、Writerクラスから継承できません。
printメソッドはより高いレベルの抽象化を持っています。
public void print(String s)
文字列を印刷します。引数がnullの場合、文字列「null」が出力されます。それ以外の場合、文字列の文字はプラットフォームのデフォルトの文字エンコードに従ってバイトに変換され、これらのバイトはwrite(int)メソッドとまったく同じ方法で書き込まれます。
お役に立てれば。
3つの大きな違いがあります。
1)out.write()を使用して文字列のnull値を出力しようとすると、NullPointerException while out.print()がスローされます。 =は単に[〜#〜] null [〜#〜]を文字列として出力します。
String name = null;
out.write(name); // NullPointerException
out.print(name); // 'Null' as text will be printed
2)out.print()ブール値を出力できますが、out.write()はできません。
boolean b = true;
out.write(b); // Compilation error
out.print(b); // 'true' will be printed
3)out.write()を使用している場合、算術演算コードを配置することはできませんが、out.print()がサポートを提供します。
out.write(10+20); // No output will be displayed.
out.print(10+20); // Output '30' will be displayed.
あなたの場合のout変数はおそらくPrintWriterを参照しています
書き込みの説明を比較するだけです...
public void write(String s)
文字列を書きます。このメソッドは、I/O例外を抑制する必要があるため、Writerクラスから継承できません。
... printlnの説明付き.。
public void println(String x)
文字列を出力してから、行を終了します。このメソッドは、print(String)を呼び出してからprintln()を呼び出すかのように動作します。
...そして印刷.。
public void print(String s)
文字列を印刷します。引数がnullの場合、文字列「null」が出力されます。それ以外の場合、文字列の文字はプラットフォームのデフォルトの文字エンコードに従ってバイトに変換され、これらのバイトはwrite(int)メソッドとまったく同じ方法で書き込まれます。
全体として、printメソッドはより高いレベルの抽象化で機能し、サーブレットを作成するときに使用することを好む方法だと思います。
PrintWriter
の実装は、javadocよりも違いをよりよく伝えます
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
私は単にこのようにそれを知っています:
out.println()
は_javax.servlet.jsp.JspWriter
_のメソッドです
out.write()
は_Java.io.Writer
_のメソッドです
まず、サーブレットで_javax.servlet.jsp.JspWriter out
_を使用することはできません。 out
は_.jsp
_ファイルの_jspService(...)
メソッドのメソッドローカル変数であるため、_.jsp
_ファイルで使用する必要があります。
out.print()
とout.write()
の使用目的に違いはありません。 どちらも、指定されたオブジェクトのString
バージョンをJspWriterのバッファに書き込むために使用されます。
ただし、JspWriter.print()
はWriter.write()
よりも多くの種類の引数を取ることができます。
JspWriter.print()
Writer.write()
write()メソッドは文字をストリーム(またはコンソール)に書き込むだけで印刷はしませんが、print()メソッドは文字をストリーム(またはコンソール)に書き込んで印刷します。
System.out.write(97);
System.out.print('j');
最初のステートメントは文字97、つまり「a」をコンソールに書き込みますが印刷しませんが、2番目のステートメントはすでにストリームに書き込まれた「a」とprint()メソッドで渡される「j」を出力します。