webentwicklung-frage-antwort-db.com.de

Was ist der genaue Unterschied zwischen out.write () und out.print ()

In meinem Servlet habe ich sowohl out.print als auch out.write angegeben. aber beide druckt im browser.

Was ist der genaue Unterschied zwischen diesen beiden und wann ist out.print und out.write zu verwenden?

13
Kumaran Palani

Der grundlegende Unterschied besteht darin, dass out.write() explodiert, wenn Sie eine Null übergeben:

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

PrintWriter :

public void write (String s)

Schreiben Sie eine Zeichenfolge. Diese Methode kann nicht von der Writer-Klasse geerbt werden, da sie E/A-Ausnahmen unterdrücken muss.

Die Druckmethode hat einen höheren Abstraktionsgrad.

public void print (Zeichenfolge)

Einen String drucken. Wenn das Argument null ist, wird die Zeichenfolge "null" gedruckt. Andernfalls werden die Zeichen der Zeichenfolge gemäß der Standardzeichencodierung der Plattform in Bytes konvertiert, und diese Bytes werden genau nach der Methode write (int) geschrieben.

Hoffe das hilft.

9
JNL

Es gibt drei Hauptunterschiede:

1) Wenn Sie versuchen, einen Nullwert eines Strings mit out.write () zu drucken, wird NullPointerException ausgelöst, während out.print () einfachNULLals Zeichenfolge.

 String name = null;
 out.write(name); // NullPointerException
 out.print(name); // 'Null' as text will be printed

2) out.print () kann boolesche Werte ausgeben, out.write () nicht.

boolean b = true;
out.write(b); // Compilation error
out.print(b); // 'true' will be printed 

3) Wenn Sie out.write () verwenden, können Sie einfach keinen arithmetischen Operationscode platzieren, aber out.print () bietet die Unterstützung.

out.write(10+20); // No output will be displayed.
out.print(10+20); // Output '30' will be displayed. 
6
user7969045

Die Variable out bezieht sich in Ihrem Fall höchstwahrscheinlich auf einen PrintWriter

Vergleichen Sie einfach die Beschreibung schreiben ...

public void write(String s)

Schreiben Sie eine Zeichenfolge. Diese Methode kann nicht von der Writer-Klasse geerbt werden, da sie E/A-Ausnahmen unterdrücken muss.

... mit der Beschreibung von println ...

public void println(String x)

Drucken Sie eine Zeichenfolge und beenden Sie die Zeile. Diese Methode verhält sich so, als würde sie print (String) und dann println () aufrufen.

... und drucken ...

public void print(String s)

Einen String drucken. Wenn das Argument null ist, wird die Zeichenfolge "null" gedruckt. Andernfalls werden die Zeichen der Zeichenfolge gemäß der Standardzeichencodierung der Plattform in Bytes konvertiert, und diese Bytes werden genau nach der Methode write (int) geschrieben.

Alles in allem würde ich sagen, dass die Druckmethoden auf einer höheren Abstraktionsebene funktionieren und diejenige sind, mit der ich beim Schreiben von Servlets am liebsten arbeite.

2

Die Implementierung von PrintWriter vermittelt den Unterschied besser als javadoc

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

Ich kenne es einfach so:

out.println() ist eine Methode von javax.​servlet.​jsp.​JspWriter

out.write() ist eine Methode von Java.io.Writer

Als erstes können Sie javax.​servlet.​jsp.​JspWriter out nicht in einem Servlet verwenden. Es muss in einer .jsp-Datei verwendet werden, da out eine lokale Methodenvariable in der _jspService(...)-Methode Ihrer .jsp-Datei ist.

Der Verwendungszweck von out.print() und out.write() unterscheidet sich nicht. Beide werden verwendet, um die String-Version des angegebenen Objekts in den JspWriter-Puffer zu schreiben.

JspWriter.print() kann jedoch viele Arten von Argumenten annehmen als Writer.write().

JspWriter.print()

  • Objekt
  • String
  • boolescher Wert
  • verkohlen
  • verkohlen[]
  • doppelt
  • float
  • int
  • lange

Writer.write()

  • String
  • verkohlen
  • int
1

die Methode write () schreibt nur Zeichen in den Stream (oder in die Konsole), druckt jedoch nicht, während die Methode print () sie in den Stream (oder in die Konsole) schreibt und druckt.

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

die erste Anweisung schreibt das Zeichen 97, d. h. 'a' auf die Konsole, druckt aber nicht, während die zweite Anweisung 'a' ausgibt, das bereits im Stream geschrieben ist, und 'j', das in der print () -Methode übergeben wird.

0
DHARMRAJSINGH