java servlets printwriter

java - Cuál es la diferencia exacta entre out.write() y out.print()



servlets printwriter (8)

La diferencia básica es que out.write() explota si le pasa un valor nulo:

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

En mi servlet dí tanto out.print como out.write . pero ambas impresiones en el navegador.

¿Cuál es la diferencia exacta entre estos dos y cuándo usar out.print y out.write ?


PrintWriter :

public void write (String s)

Escribe una cuerda. Este método no se puede heredar de la clase Writer porque debe suprimir las excepciones de E / S.

el método de impresión tiene un mayor nivel de abstracción.

impresión pública vacía (String s)

Imprimir una cadena. Si el argumento es nulo, se imprime la cadena "nulo". De lo contrario, los caracteres de la cadena se convierten en bytes de acuerdo con la codificación de caracteres predeterminada de la plataforma, y ​​estos bytes se escriben exactamente de la misma manera que el método de escritura (int).

Espero que esto ayude.


La variable de salida en su caso probablemente se refiere a un PrintWriter

Simplemente compare la descripción de escribir ...

public void write(String s)

Escribe una cuerda. Este método no se puede heredar de la clase Writer porque debe suprimir las excepciones de E / S.

... con la descripción de println ...

public void println(String x)

Imprime una Cadena y luego termina la línea. Este método se comporta como si invoca print (String) y luego println ().

... e imprime ...

public void print(String s)

Imprimir una cadena. Si el argumento es nulo, se imprime la cadena "nulo". De lo contrario, los caracteres de la cadena se convierten en bytes de acuerdo con la codificación de caracteres predeterminada de la plataforma, y ​​estos bytes se escriben exactamente de la misma manera que el método de escritura (int).

En general, diría que los métodos de impresión funcionan en un nivel más alto de abstracción y es con el que prefiero trabajar cuando escribo servlets.


out.write (-) vs out.print (-)

Una diferencia más está fuera. El método de escritura (-) simplemente escribe datos u objetos en el navegador como un archivo. No puede escribir ninguna declaración como out.write (10 * 20); pero hacemos esto con out.print (10 * 20);


El método write () solo escribe caracteres en la secuencia (o consola) pero no imprime, mientras que el método print () escribe e imprime en la secuencia (o consola).

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

la primera instrucción escribe el carácter 97, es decir, ''a'' en la consola pero no imprime, mientras que la segunda afirmación imprime ''a'', que ya está escrita y ''j'', que se pasa en el método print ().


La implementación de PrintWriter comunica la diferencia mejor que javadoc

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


Hay tres grandes diferencias:

1) Si intenta imprimir un valor nulo de un String con out.write () , lanzará NullPointerException mientras out.print () simplemente imprimirá NULL como una cadena.

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

2) out.print () puede imprimir valores booleanos pero out.write () no puede.

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

3) Si está utilizando out.write () , simplemente no puede colocar el código de operación aritmética, pero out.print () proporciona el soporte.

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


Simplemente sé como esto:

out.println() es el método de JspWriter

out.write() es el método de java.io.Writer