web-dev-qa-db-fra.com

Quelle est la différence exacte entre out.write () et out.print ()

Dans mon servlet j'ai donné à la fois out.print et out.write. mais les deux impressions dans le navigateur.

Quelle est la différence exacte entre ces deux et quand utiliser out.print et out.write?

13
Kumaran Palani

La différence fondamentale est que out.write() explose si vous lui passez la valeur null:

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

PrintWriter :

public void write (String s)

Écrivez une chaîne. Cette méthode ne peut pas être héritée de la classe Writer car elle doit supprimer les exceptions d'E/S.

La méthode d'impression a un niveau d'abstraction plus élevé.

public void print (String s)

Imprimer une chaîne. Si l'argument est null, la chaîne "null" est imprimée. Dans le cas contraire, sont convertis les caractères de la chaîne en octets selon le codage de caractères par défaut de la plate-forme, et ces octets sont écrits exactement de la manière de la méthode d'écriture (int).

J'espère que cela t'aides.

9
JNL

Il y a trois différences majeures:

1) Si vous essayez d’imprimer la valeur NULL d’une chaîne avec out.write () , il lancera NullPointerException while out.print () imprimera simplementNULLsous forme de chaîne.

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

2) out.print () peut imprimer des valeurs booléennes mais out.write () ne peut pas.

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

3) Si vous utilisez out.write () , vous ne pouvez tout simplement pas placer de code d’opération arithmétique, mais out.print () fournit le support.

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

La variable out dans votre cas est le plus susceptible fait référence à un PrintWriter

Il suffit de comparer la description de l'écriture ...

public void write(String s)

Écrivez une chaîne. Cette méthode ne peut pas être héritée de la classe Writer car elle doit supprimer les exceptions d'E/S.

... avec la description de println ...

public void println(String x)

Imprimez une chaîne, puis terminez la ligne. Cette méthode se comporte comme si elle invoquait print (String) puis println ().

... et imprimer ...

public void print(String s)

Imprimer une chaîne. Si l'argument est null, la chaîne "null" est imprimée. Dans le cas contraire, sont convertis les caractères de la chaîne en octets selon le codage de caractères par défaut de la plate-forme, et ces octets sont écrits exactement de la manière de la méthode d'écriture (int).

Dans l'ensemble, je dirais que les méthodes d'impression fonctionnent à un niveau d'abstraction plus élevé et c'est celle avec laquelle je préfère travailler lors de l'écriture de servlets.

2
Ashish Chaurasia

L'implémentation de PrintWriter communique mieux la différence que javadoc

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

Je le sais simplement comme ceci:

out.println() est la méthode de javax.​servlet.​jsp.​JspWriter

out.write() est la méthode de Java.io.Writer

1

La première chose à faire est que vous ne pouvez pas utiliser javax.​servlet.​jsp.​JspWriter out dans une servlet. Il doit être utilisé dans un fichier .jsp, car out est une variable locale de méthode dans la méthode _jspService(...) de votre fichier .jsp.

L'utilisation de out.print() et de out.write() n'a pas changé. Les deux sont utilisés pour écrire la version String de l'objet donné dans le tampon de JspWriter.

Cependant, JspWriter.print() est capable de prendre plusieurs types d'arguments que Writer.write().

JspWriter.print()

  • Objet
  • Chaîne
  • booléen
  • carboniser
  • carboniser[]
  • double
  • float
  • int
  • longue

Writer.write()

  • Chaîne
  • carboniser
  • int
1
Roshana Pitigala

la méthode write () écrit uniquement les caractères dans le flux (ou la console) mais n'imprime pas, tandis que la méthode print () écrit et l'imprime sous forme de flux (ou de console).

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

la première instruction écrit le caractère 97, c'est-à-dire 'a' sur la console mais ne s'imprime pas, alors que la deuxième instruction imprime 'a' qui est déjà écrit en flux et 'j' qui est passé dans la méthode print ().

0
DHARMRAJSINGH