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

Java out.write()和out.print()之间的确切区别是什么,java,servlets,printwriter,Java,Servlets,Printwriter,在我的servlet中,我同时给出了out.print和out.write。但这两个都在浏览器中打印 这两者之间的确切区别是什么,以及何时使用out.print和out.write?: 公共无效写入(字符串s) 写一个字符串。无法从Writer类继承此方法 因为它必须抑制I/O异常 打印方法具有更高的抽象级别。 公共作废打印(字符串s) 打印字符串。如果参数为null,则字符串“null”为空 印刷的。否则,字符串的字符将转换为字节 根据平台的默认字符编码 字节的写入方式与write(int)方

在我的servlet中,我同时给出了
out.print
out.write
。但这两个都在浏览器中打印

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

公共无效写入(字符串s)

写一个字符串。无法从Writer类继承此方法 因为它必须抑制I/O异常

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

公共作废打印(字符串s)

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


希望这能有所帮助。

您案例中的out变量很可能是指PrintWriter

只需比较一下对write的描述

public void write(字符串s)

写一个字符串。无法从Writer类继承此方法,因为它必须抑制I/O异常

。。。用println的描述

public void println(字符串x)

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

。。。并打印

公共作废打印(字符串s)

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


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

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

String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException
输出写入(-)与输出打印(-) 又差了一个。写(-) 方法将数据或对象像文件一样写入浏览器。你不能写任何像out这样的语句。写(10*20)但是我们使用输出打印(10*20)来实现这一点

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


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

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

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

有三个主要区别:

1) 如果您试图打印带有out.write()的字符串的空值,它将抛出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.println()
javax的方法。​servlet。​jsp。​JspWriter


out.write()
java.io.Writer

的方法。首先,您不能使用
javax。​servlet。​jsp。​JspWriter在servlet中输出
。它必须在
.jsp
文件中使用,因为
out
是您的
.jsp
文件的
\jspService(…)
方法中的方法局部变量

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

但是,
JspWriter.print()
能够接受比
Writer.write()
更多类型的参数

JspWriter.print()

  • 反对
  • 布尔值
  • 煤焦
  • 字符[]
  • 双重的
  • 浮动
  • int
  • 长的
Writer.write()

  • 煤焦
  • int

输出的
类型是什么?文档怎么说?那么写入的数据去哪里了?它一直保留在流中,直到流不刷新,刷新后流数据将在控制台上打印。print()方法刷新以前的数据并打印传入其中的数据。
out.write(10+20); // No output will be displayed.
out.print(10+20); // Output '30' will be displayed.