在我的servlet中,我同时提供了out.print
和out.write
。但两者都在浏览器中打印。
这两者之间的确切区别是什么以及何时使用out.print
和out.write
?
答案 0 :(得分:13)
基本区别在于out.write()
如果你传递null,则会爆炸:
String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException
答案 1 :(得分:9)
public void write(String s)
写一个字符串。此方法不能从Writer类继承 因为它必须抑制I / O异常。
print方法具有更高的抽象级别。
public void print(String s)
打印一个字符串。如果参数为null,则字符串“null”为 打印。否则,字符串的字符将转换为字节 根据平台的默认字符编码,以及这些 字节的写入方式与write(int)方法完全相同。
希望这有帮助。
答案 2 :(得分:6)
有三个主要区别:
1)如果您尝试使用 out.write()打印String的空值,则会在 out.print()时抛出 NullPointerException 只会将 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.
答案 3 :(得分:2)
您的案例中的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,则打印字符串“null”。否则,字符串的字符将根据平台的默认字符编码转换为字节,并且这些字节的写入方式与write(int)方法完全相同。
总而言之,我会说打印方法在更高级别的抽象上工作,并且是我在编写servlet时更喜欢使用的方法。
答案 4 :(得分:2)
PrintWriter
的实施方式比javadoc
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
答案 5 :(得分:1)
我只是知道它是这样的:
out.println()
是javax.servlet.jsp.JspWriter
out.write()
是java.io.Writer
答案 6 :(得分:1)
首先,您无法在servlet中使用javax.servlet.jsp.JspWriter out
。它必须在.jsp
文件中使用,因为out
是_jspService(...)
文件的.jsp
方法中的方法局部变量。
使用
out.print()
和out.write()
的目的没有区别。 两者都用于将给定对象的String
版本写入JspWriter的缓冲区。
但是,JspWriter.print()
能够采用多种类型的参数而不是Writer.write()
。
<强> JspWriter.print()
强>
<强> Writer.write()
强>
答案 7 :(得分:0)
write()方法只将字符写入流(或控制台)但不打印,而print()方法在流(或控制台)上写入和打印。
System.out.write(97);
System.out.print('j');
第一个语句在控制台上写字符97即'a'但不打印,而第二个语句打印已在流上写入的'a'和在print()方法中传递的'j'。
答案 8 :(得分:-1)
另一个区别是out.write( - ) 方法只是像浏览文件一样将数据或对象写入浏览器。您不能写任何声明,例如 out.write(10 * 20); ,但我们使用 out.print(10 * 20);
执行此操作