out.write()和out.print()之间的确切区别是什么

在我的servlet中,我给了out.printout.write 。 但两者都在浏览器中打印。

这两者之间的确切区别是什么以及何时使用out.printout.write

基本的区别是如果你传递一个null, out.write()会爆炸:

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

PrintWriter :

public void write(String s)

写一个字符串。 此方法不能从Writer类inheritance,因为它必须抑制I / Oexception。

print方法具有更高的抽象级别。

public void print(String s)

打印一个字符串。 如果参数为null,则打印字符串“null”。 否则,根据平台的默认字符编码将字符串的字符转换为字节,并且这些字节的写入方式与write(int)方法完全相同。

希望这可以帮助。

有三个主要差异:

1)如果您尝试使用out.write()打印String的空值,它将抛出NullPointerException,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)

写一个字符串。 此方法不能从Writer类inheritance,因为它必须抑制I / Oexception。

…与println的描述……

public void println(String x)

打印字符串然后终止该行。 此方法的行为就像调用print(String)然后调用println()一样。

……并打印……

public void print(String s)

打印一个字符串。 如果参数为null,则打印字符串“null”。 否则,根据平台的默认字符编码将字符串的字符转换为字节,并且这些字节的写入方式与write(int)方法完全相同。

总而言之,我会说打印方法在更高的抽象级别上工作,并且是我在编写servlet时更喜欢使用的方法。

PrintWriter的实现比javadoc更好地传达了这种差异

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

我只是知道它是这样的:

out.println()javax.​servlet.​jsp.​JspWriter方法javax.​servlet.​jsp.​JspWriter

out.write()java.io.Writer

首先,你不能在servlet中使用javax.​servlet.​jsp.​JspWriter out 。 它必须在.jsp文件中使用,因为out.jsp文件的_jspService(...)方法中的方法局部变量。

使用out.print()out.write()的目的没有区别。 两者都用于将给定对象的String版本写入JspWriter的缓冲区。

但是, JspWriter.print()能够采用多种类型的参数而不是Writer.write()

JspWriter.print()

  • 目的
  • 布尔
  • 烧焦
  • 炭[]
  • 浮动
  • INT

Writer.write()

  • 烧焦
  • INT

write()方法只将字符写入流(或控制台)但不打印,而print()方法在流(或控制台)上写入和打印。

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

第一个语句在控制台上写入字符97即’a’但不打印,而第二个语句打印已在流上写入的’a’和在print()方法中传递的’j’。

out.write( – )vs out.print( – )

另一个区别是out.write( – )方法只是将数据或对象写入浏览器,就像文件一样。 你不能写任何像out.write(10 * 20)的声明; 但我们用out.print(10 * 20)做到这一点;