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

时间:2013-08-20 14:48:23

标签: java servlets printwriter

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

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

9 个答案:

答案 0 :(得分:13)

基本区别在于out.write()如果你传递null,则会爆炸:

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

答案 1 :(得分:9)

PrintWriter

  

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()

  • 对象
  • 字符串
  • 布尔
  • 炭[]
  • INT

<强> Writer.write()

  • 字符串
  • INT

答案 7 :(得分:0)

write()方法只将字符写入流(或控制台)但不打印,而print()方法在流(或控制台)上写入和打印。

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

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

答案 8 :(得分:-1)

out.write( - )vs out.print( - )

另一个区别是out.write( - ) 方法只是像浏览文件一样将数据或对象写入浏览器。您不能写任何声明,例如 out.write(10 * 20); ,但我们使用 out.print(10 * 20);

执行此操作