java中做字符串非空判断,为啥要同时判断字符串不为null和不等于空串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中做字符串非空判断,为啥要同时判断字符串不为null和不等于空串?相关的知识,希望对你有一定的参考价值。

对于null而言。如果一个字符串为null,例如String a = null; 那么此时,调用字符串对象a的方法,例如a.length(); 就会报空指针异常,即NullPointerException。如果这个异常没有被catch住的话,a.length();后面的代码就都不会被执行了。同时,如果这个程序是服务器程序,那么还会出现500这种属于比较严重的问题。所以,在使用字符串对象前要先判断一下其不为null。
不等于空串这个就是根据具体业务而定了,空串也就是字符串长度为0。那么这种字符串在很多时候是没什么意义的。如果一个字符串是空串,那么就可以不执行后面的业务逻辑了(视具体业务而定)。所以这种情况也需要判断。
参考技术A 简而言之就是 : null的出现是声明了对象,判断没有给对象开辟空间; “”空是判断给对象开辟了空间但没有值的情况,String类型同时具备这两种情况,所以都要进行判断,已达到万无一失。
//判断字符串为空串
public boolean checkStringIsNull(String str)
if(str ==null || "".equals(str))
return true;


return false;
参考技术B 这个得看场景。
1、一般在程序开发者,对null和字符串""(其实还有" "这类)做非空判断,如果在我们程序的业务处理中,这两类在处理的业务逻辑上认为是一样的话,就需要同时判断。
2、有些业务场景中对null和字符串"",做了严格区分,这时候就得区别判断了
事实上,大部分处理场景就跟第一点差不多,所以比较常见。
总而言之,就是需要具体场景分析。
另外,对于这种情况判断,题主可以上网看看StringUtils函数
参考技术C 空字符串和字符串不为空是两个概念,需要唯一确定。

java非空判断

  1. 是否为 null
  2. 是否为 ""
  3. 是否为空字符串(引号中间有空格)  如: "     "。
  4. 制表符、换行符、换页符和回车

一. 字符串

1. if(str == null || str == "")                 非空 if(str != null && str != "")

2. if(str == null || str.isEmpty())                  if(str != null && !str.isEmpty())

3.if (str == null  || "".equals(str.trim()))       if (str != null && !"".equals(str.trim()))

4.if(str == null   || str.length()<=0)              if(str != null && str.length()>0)

5.if(str == null || "".equals(str))                  if(str != null && !"".equals(str))

6.if(StringUtils.isBlank(str))                       if(StringUtils.isNotBlank(str))                  import org.apache.commons.lang3.StringUtils;判断的是str.length(),相当于4

二.数组

1.arr==null || (arr!=null &&arr.length==0)           非空  arr!=null || (arr==null &&arr.length!=0) 

三.List集合

1.if(list == null || list.isEmpty())            非空  if(list != null && !list.isEmpty())

2.if(list == null || list.size() == 0)                    if(list != null && list.size() > 0)

3.if(list == null || StringUtils.isEmpty(list))     if(list != null && !StringUtils.isEmpty(list))

4.if (CollectionUtils.isEmpty(list))                  if (CollectionUtils.isNotEmpty(list))      等价于2

四.Map

1.if (MapUtils.isEmpty(map))                    非空  if (MapUtils.isNotEmpty(map))      等价于2

2.if(map== null || map.size() == 0)                     if(map!= null && map.size() > 0)

3.if(map== null || StringUtils.isEmpty(map))      if(map!= null && !StringUtils.isEmpty(map))

4.if(map== null || StringUtils.isEmpty(map))          if(map!= null && !StringUtils.isEmpty(map))

null和isEmpty()的区别

  1. 这就相当于去商店买东西
  2.  null 首先判断是否有商店(new ArrayList();)
  3.  isEmpty()没有判断商店是否存在,而是判断商店是否有东西,如果连商店都没有,何来的的东西可卖(list.add(商品))

 

以上是关于java中做字符串非空判断,为啥要同时判断字符串不为null和不等于空串?的主要内容,如果未能解决你的问题,请参考以下文章

java中做字符串非空判断,为啥要同时判断字符串不为null和不等于空串?

java如何判断非空

java基础之----非空判断

如何判断 Tasker 变量是未设置、空字符串还是非空字符串

java非空判断

在java中为啥做了非空判断,但还是报错,比如下面,都做了是不是为null的判断,但是运行到那还是报null错