out.write()和out.print()之间的确切区别是什么
在我的servlet中,我给了out.print
和out.write
。 但两者都在浏览器中打印。
这两者之间的确切区别是什么以及何时使用out.print
和out.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)做到这一点;