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

2022-09-02 23:18:10

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

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


答案 1

简短的答案是,如果您将其传递为 null,则会爆炸:out.write()

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

更完整的答案是,在servlets中是一个PrintWriter,其重载方法只接受几种基本类型,但执行将字节输出到底层的工作。outwrite()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));
}

等,用于所有基元类型。


答案 2

有三个主要区别:

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. 

推荐