<input type="text">中的value为null或"",有何区别啊

我看书上检测里面的value有这个value等于null或""做某些个处理一楼说的我明白,只是不明白网页中的输入框如何输入空字符串呢,不输入的时候就代表null对吗,什么... 我看书上检测里面的value有这个value等于null或""做某些个处理
一楼说的我明白,只是不明白网页中的输入框如何输入空字符串呢,不输入的时候就代表null对吗,什么时候代表空字符串呢
展开
 我来答
开心果lShE
推荐于2016-11-19 · TA获得超过1.9万个赞
知道大有可为答主
回答量:3928
采纳率:84%
帮助的人:735万
展开全部
一般情况下是通过输入框来输入参数的。如果什么也没有输入,后面获取的就是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方法就不会抛出异常。

为了应对上述可能出现的空指针异常,就需要同时判断上述的两种可能。
修罗撒旦
2009-06-25 · TA获得超过690个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:128万
展开全部
PS:楼主问的很好。一般情况下我们是通过输入框来输入参数的。如果我们什么也没有输入,后面获取的就是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方法就不会抛出异常。

为了应对上述可能出现的空指针异常,我们就需要同时判断上述的两种可能。

有什么不明白的可以继续补充。呵呵。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tw3259
2009-06-25
知道答主
回答量:26
采纳率:0%
帮助的人:10.1万
展开全部
null代表的多一些,可以是字符串为空,数字为0等等类型,
而“”仅代表是个空的字符串一个类型而已民。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冷冬飘大雪
推荐于2017-11-21 · TA获得超过104个赞
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
null代表的多一些,可以是字符串为空,数字为0等等类型,
而“”仅代表是个空的字符串一个类型而已民
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乱一笑4971
2009-06-25 · 超过41用户采纳过TA的回答
知道答主
回答量:249
采纳率:0%
帮助的人:123万
展开全部
接受的地方要做判断的话就有区别
if str = null 和 if str ="" 是不同的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式