web-dev-qa-db-ja.com

out.write()とout.print()の正確な違いは何ですか

私のサーブレットでは、out.printout.writeの両方を指定しました。しかし、両方ともブラウザで印刷されます。

これら2つの正確な違いと、いつout.printout.writeを使用するか

14
Kumaran Palani

基本的な違いは、nullを渡すとout.write()が爆発することです。

String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException
14
Bohemian

PrintWriter

public void write(String s)

文字列を書きます。このメソッドは、I/O例外を抑制する必要があるため、Writerクラスから継承できません。

printメソッドはより高いレベルの抽象化を持っています。

public void print(String s)

文字列を印刷します。引数がnullの場合、文字列「null」が出力されます。それ以外の場合、文字列の文字はプラットフォームのデフォルトの文字エンコードに従ってバイトに変換され、これらのバイトはwrite(int)メソッドとまったく同じ方法で書き込まれます。

お役に立てれば。

9
JNL

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. 
6
user7969045

あなたの場合の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メソッドはより高いレベルの抽象化で機能し、サーブレットを作成するときに使用することを好む方法だと思います。

2

PrintWriterの実装は、javadocよりも違いをよりよく伝えます

public void print(String s) {
    if (s == null) {
        s = "null";
    }
    write(s);
}
2
user2418306

私は単にこのようにそれを知っています:

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()

  • オブジェクト
  • ストリング
  • ブール値
  • char
  • char []
  • ダブル
  • float
  • int
  • 長いです

Writer.write()

  • ストリング
  • char
  • int
1

write()メソッドは文字をストリーム(またはコンソール)に書き込むだけで印刷はしませんが、print()メソッドは文字をストリーム(またはコンソール)に書き込んで印刷します。

System.out.write(97);
System.out.print('j');

最初のステートメントは文字97、つまり「a」をコンソールに書き込みますが印刷しませんが、2番目のステートメントはすでにストリームに書き込まれた「a」とprint()メソッドで渡される「j」を出力します。

0
DHARMRAJSINGH