一丶簡介
在JSP中out.print()和out.write()方法都屬於抽象類Writer的抽象子類JspWriter的方法;其中out.print()方法屬於抽象子類JspWriter中的方法,而out.write()是父類Writer的方法.
二丶out.write()與out.print()方法的區別
①該方法只能輸出字符/字符數組/字符串等等字符相關類型的數據;而對於out.print()方法是屬於子類JspWriter中的自己的抽象方法,它將所有數據都轉換爲了字符串的形式輸出.
②對於當兩種方法輸入的都爲字符串時,如果值爲null,對於out.print()來說會打印出null,而對於out.write()來說會直接報出空指針異常(NullPointerException異常).
對於上述情況進行的案列分析:如果直接傳入的數據是數字時:
如果是一下代碼:
<% out.print(1); %>
<!--<hr/>是分割線-->
<hr/>
<% out.write(1); %>
打印結果如下:
上圖中out.print(1):打印出的效果是爲1;而對於out.write(1):打印出來的是空,沒有值.原因何在?
因爲:在out.print(1)中直接將1轉化爲了字符串”1”,所以顯示出來時1;而對於out.write(1)中是將1轉換爲了對應的ASCII表中的字符,在對應的ASCII碼錶中1-32對應的字符在頁面上都不能顯示出來.
如果傳入的是整數97呢?
代碼如下:
<% out.print(97); %>
<!--<hr/>是分割線-->
<hr/>
<% out.write(97); %>
顯示:
以下是ASCII碼錶的相關信息:
附帶out.write()相關原碼:
public void write(int c) throws IOException {
synchronized (lock) {
if (writeBuffer == null){
writeBuffer = new char[writeBufferSize];
}
writeBuffer[0] = (char) c;
write(writeBuffer, 0, 1);
}
}