out.write() 和 out.print() 之间的确切区别是什么?
2022-09-02 23:18:10
在我的服务中,我给了两个和.但两者都在浏览器中打印。out.print
out.write
这两者之间的确切区别是什么,何时使用和?out.print
out.write
在我的服务中,我给了两个和.但两者都在浏览器中打印。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
更完整的答案是,在servlets中是一个PrintWriter
,其重载方法只接受几种基本类型,但执行将字节输出到底层的工作。out
write()
OutputStream
该方法是一个方便的包装器方法,它包装调用 to,为其众多重载实现提供自定义行为。例如:print()
write()
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
public void print(Object obj) {
write(String.valueOf(obj));
}
public void print(double d) {
write(String.valueOf(d));
}
等,用于所有基元类型。
有三个主要区别:
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.