out.print和out.write

这是一个JSP页面: 

Java代码  收藏代码
  1. <%@ page language="java" import="java.util.*"  %>  
  2. <%@ page pageEncoding="UTF-8" isELIgnored="false" %>  
  3. <%@ page import="java.util.Date" %>  
  4.   
  5. <html>  
  6.   <head>   
  7.     <title>  </title>  
  8.   </head>    
  9.   <body>  
  10.     <h1>现在时间:</h1>  
  11.     <%=new Date() %>  
  12.   </body>  
  13. </html>  


转译后生成的servlet,对应的body中,有以下代码: 

Java代码  收藏代码
  1. out.write("<h1>现在时间:</h1> ");  
  2. out.print( new Date());  



思考: 
<%=  %>表达式代表的是什么? 为什么 new Date()后,没有 “;”(分号)? 
servlet中,out.write() 和 out.print() 有何区别? 

解答: 
There is a method print(Object). There is no method write(Object) 
write(String) exists however. 
serch the javaAPI you will find 
------------------------------------------ 
(java中)有这个方法:print(Object),没有这个方法:write(Object) 
但是却有这个方法:write(String) 
查找javaAPI,你便会发现。 

总结: 
out.print()方法,可以输出一个java对象; 
out.write()方法,只能输入一个字符串。 


参考资料: 
jsp中的out对象是JspWriter类型的.而JspWriter继承了java.io.Writer . 

out对象的write方法是在在父类Writer中定义的,print方法是在子类JspWriter中定义的. 
重载的print方法可以将各种类型的数据转换成字符串的形式输出. 
而重载的write方法只能输出字符/字符数组/字符串等与字符相关的数据. 

而且如果使用这两种方法输出值为null的字符串对象, 
那么print方法输出的结果是"null", 
而write方法则会抛出NullPoiterException异常. 

原文地址:https://www.cnblogs.com/wnlja/p/3928626.html