17

在我的 servlet 中,我同时给出了out.printout.write。但两者都在浏览器中打印。

这两者之间的确切区别是什么以及何时使用out.printand out.write

4

9 回答 9

16

基本的区别是,out.write()如果你传递一个空值,它就会爆炸:

String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException
于 2013-08-20T15:00:43.527 回答
10

打印作者

公共无效写入(字符串 s)

写一个字符串。此方法不能从 Writer 类继承,因为它必须抑制 I/O 异常。

print 方法具有更高的抽象级别。

公共无效打印(字符串 s)

打印一个字符串。如果参数为空,则打印字符串“null”。否则,字符串的字符会根据平台默认的字符编码转换为字节,并且这些字节完全按照 write(int) 方法的方式写入。

希望这可以帮助。

于 2013-08-20T14:53:13.730 回答
10

有三个主要区别:

1) 如果您尝试使用out.write()打印 String 的 null 值,它将抛出NullPointerExceptionout.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. 
于 2017-06-24T05:28:12.627 回答
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”。否则,字符串的字符会根据平台默认的字符编码转换为字节,并且这些字节完全按照 write(int) 方法的方式写入。

总而言之,我想说打印方法在更高的抽象级别上工作,并且是我在编写 servlet 时更喜欢使用的方法。

于 2013-08-20T14:59:39.097 回答
2

PrintWriter的实现比 javadoc 更好地传达了差异

public void print(String s) {
    if (s == null) {
        s = "null";
    }
    write(s);
}
于 2017-05-20T17:12:50.037 回答
2

首先是你不能javax.​servlet.​jsp.​JspWriter out在 servlet 中使用。它必须在.jsp文件中使用,因为它是文件方法中out的方法局部变量。_jspService(...).jsp

out.print()使用和的目的没有区别out.write()两者都用于String将给定对象的版本写入 JspWriter 的缓冲区。

但是,JspWriter.print()能够接受比 . 更多类型的参数Writer.write()

JspWriter.print()

  • 目的
  • 细绳
  • 布尔值
  • 字符
  • 字符[]
  • 双倍的
  • 漂浮
  • 整数

Writer.write()

  • 细绳
  • 字符
  • 整数
于 2018-01-23T11:27:41.280 回答
1

我只是知道它是这样的:

out.println()是方法javax.​servlet.​jsp.​JspWriter

out.write()是方法java.io.Writer

于 2017-10-04T13:46:05.323 回答
1

write() 方法仅将字符写入流(或控制台)但不打印,而 print() 方法将其写入并打印到流(或控制台)上。

System.out.write(97);
System.out.print('j');

第一条语句在控制台上写入字符 97 即“a”但不打印,而第二条语句打印已经在流中写入的“a”和在 print() 方法中传递的“j”。

于 2017-04-19T12:00:56.563 回答
-1

out.write(-) 与 out.print(-)

另一个区别是 out.write(-) 方法只是将数据或对象像文件一样写入浏览器。你不能写任何像out.write(10*20);这样的语句 但我们用out.print(10*20);

于 2016-10-07T16:48:27.543 回答