JSP页面中内置对象out的打印方法out.print与out.write的区别

一丶简介
在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); %>

显示:
传入整数97时的显示效果

以下是ASCII码表的相关信息:
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);
        }
    }
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值