input type="text">中的value为null或"",区别

以后注意:

if (str=="")return;  
if(!str)return;
if(empty(str)) return;
//判断str输入框为空

这三种都是判断是否为空的

一般情况下是通过输入框来输入参数的。如果什么也没有输入,后面获取的就是null值。但是这个时候有一个问题,做软件不能认为用户总会按照认为正确的方式如乖乖的从文本框输入。系统在发布的时候是不会知道用户是谁的,可能是一个什么也不知道的计算机文盲,也可能是黑客。如果是后者,就会利用任何可能潜在的BUG来攻击WEB。


例如在URL里面传参。这个时候可能会说,如果定义成POST方式不就可以避免了吗?恩,这个时候的确可以避免URL传参,但并不能避免其他的方式。比如写一个伪页,向的后台提交请求。这个时候就是考验代码健壮性的时候了。就可能会给的参数赋值一个“”而不是一个null。

再有一种可能就是在页面需要处理一些中间数据,这个时候可能会设置Text的值为“”,而不是让它是null。这样以来如果如果把这个提交到后台的话就会产生不可预知的错误。

总归一句话,这样做检查,就是为了让代码更健壮。稳定性更强。

假设受的参数名为 str,他和 str = null 和str = "" 是两个概念。

1. str = null 的内存空间开辟过程如下:

开辟内存空间A, 存放参数名str, 其中它的指向为空,也就是说它没有指向任何内存空间。

2. str = ""的内存空间开辟过程如下:

开辟内存空间A,存放参数名str, 开辟内存空间B,将B得地址存放到A里面,也就是说str有了指向,且其指向为内存空间B. 但是B空间里面的值为空。也就是说是个空字符串。

综上两点的意思是
一个开辟了对象STRING, 但是没有任何值。str = ""
一个没有开辟对象STRING。str = null

以上了解以后就可以区分为什么要同时检测者两种情况了。

如果str为null,则说明该对象未创建,这个时候调用其方法(如str.length())的时候就会抛出空指针错误。

如果str为"",说明创建了对象,只是其值为空,这个时候调用其length方法就不会抛出异常。

为了应对上述可能出现的空指针异常,就需要同时判断上述的两种可能。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值