在我的 servlet 中,我同时给出了out.print
和out.write
。但两者都在浏览器中打印。
这两者之间的确切区别是什么以及何时使用out.print
and out.write
?
在我的 servlet 中,我同时给出了out.print
和out.write
。但两者都在浏览器中打印。
这两者之间的确切区别是什么以及何时使用out.print
and out.write
?
基本的区别是,out.write()
如果你传递一个空值,它就会爆炸:
String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException
打印作者:
公共无效写入(字符串 s)
写一个字符串。此方法不能从 Writer 类继承,因为它必须抑制 I/O 异常。
print 方法具有更高的抽象级别。
公共无效打印(字符串 s)
打印一个字符串。如果参数为空,则打印字符串“null”。否则,字符串的字符会根据平台默认的字符编码转换为字节,并且这些字节完全按照 write(int) 方法的方式写入。
希望这可以帮助。
有三个主要区别:
1) 如果您尝试使用out.write()打印 String 的 null 值,它将抛出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 类继承,因为它必须抑制 I/O 异常。
...带有 println 的描述 ...
public void println(String x)
打印一个字符串,然后终止该行。这个方法的行为就像它调用 print(String) 然后 println()。
...并打印...
public void print(String s)
打印一个字符串。如果参数为空,则打印字符串“null”。否则,字符串的字符会根据平台默认的字符编码转换为字节,并且这些字节完全按照 write(int) 方法的方式写入。
总而言之,我想说打印方法在更高的抽象级别上工作,并且是我在编写 servlet 时更喜欢使用的方法。
PrintWriter
的实现比 javadoc 更好地传达了差异
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
首先是你不能javax.servlet.jsp.JspWriter out
在 servlet 中使用。它必须在.jsp
文件中使用,因为它是文件方法中out
的方法局部变量。_jspService(...)
.jsp
out.print()
使用和的目的没有区别out.write()
。两者都用于String
将给定对象的版本写入 JspWriter 的缓冲区。
但是,JspWriter.print()
能够接受比 . 更多类型的参数Writer.write()
。
JspWriter.print()
Writer.write()
我只是知道它是这样的:
out.println()
是方法javax.servlet.jsp.JspWriter
out.write()
是方法java.io.Writer
write() 方法仅将字符写入流(或控制台)但不打印,而 print() 方法将其写入并打印到流(或控制台)上。
System.out.write(97);
System.out.print('j');
第一条语句在控制台上写入字符 97 即“a”但不打印,而第二条语句打印已经在流中写入的“a”和在 print() 方法中传递的“j”。
另一个区别是 out.write(-) 方法只是将数据或对象像文件一样写入浏览器。你不能写任何像out.write(10*20);这样的语句 但我们用out.print(10*20);