为空为Null的判断

目录

一、List集合

1.1判空:

1.2判null:

1.3编码建议:

1.4异常示例:

二、String字符串:

2.1内存分配,值比较:

2.2编码建议:

2.3异常示例:

2.4 str.equals("abc")与"abc".equal(str)的区别

三、StringUntils.isEmpty 与 StringUntils.isBlank


在做项目的过程中,发现之前同事写的代码,正好和我现在做的功能有些类似。于是就借鉴了一下他的代码。不过在自测的过程中发现了问题,后来仔细一查,原来是List集合判空或判断为Null这里出现了问题。所以在此总结一下两者的区别。

一、List集合

为空:我有一个空的钱包(list),list.size()== 0。直接可以存钱(list.add(money))

为null:没有钱包,是null。如果想存钱,必须自己买个钱包(new ArrayList()),然后才可以存钱。如果没有钱包直接取钱,就会报(空指针异常)

1.1判空:

List<String> cinemaList = new ArrayList<>();

cinemaList.isEmpty()   //判断有没有元素

cinemaList.size()==0   //返回有几个元素

如果判断一个集合是否为空,使用上面两者任何一个都可以。

1.2判null:

list等于null,可以理解为没有对list集合分配内存空间。

List<Strig> cinemaList = null;

cinemaList == null  //判断集合是否为null

1.3编码建议:

为了避免空指针异常,建议在使用或赋值list集合之前,做一次空集合处理,进行内存空间分配,即: List list = new ArrayList();

判断时候: if(list != null && !list.siEmpty())   或者  if(list != null && list.size()>0)

1.4异常示例:

if(sysUserList.get(i).getisdelete() == 1)

criteria.andCompanyCodeEqualTo(sysUserList.get(i).getCompanyCode());

这样的代码,如果数据库中正好返回null,就会报空指针异常java.lang.NullPointerException等的问题。这也是在做项目的过程中发现的问题,以后需要注意。进行一下null的判断。

二、String字符串:

"":空字符串,它的长度为0。

null:表示一个对象的值,而并不是一个字符串

2.1内存分配,值比较:

String str = null; 表示声明一个字符串对象的引用,但指向为null,没有指向任何的内存空间。

String str = ""; 表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间。

    String str1 = new String() ;
    String str2 = null ;
    String str3 = "" ;

    System.out.println(str1==str2);                //内存地址的比较,返回false
    System.out.println(str2==str3);                //内存地址的比较,返回false
    System.out.println(str1==str3);                //内存地址的比较,返回false

    System.out.println(str1.equals(str2));         //值的比较,返回false
    System.out.println(str3.equals(str2));         //值的比较,返回false   
    System.out.println(str1.equals(str3));         //值的比较,返回  true

new String()创建一个字符串对象的默认值为""

2.2编码建议:

一般先进行判null,然后进行判空。(如果String类型为null,而进行 equals(String)或length()等操作会报java.lang.NullPointerException空指针异常的问题)

if( str == null || str.isEmpty()) 或者 if( str == null || str.equals(""))

2.3异常示例:

String str = null;

if(str.equals("") || str == null){

//会抛出异常 ——空指针异常

}

2.4 str.equals("abc")与"abc".equal(str)的区别

str.equals("abc"):这种常量写在后面是很常见的,但是前面要加上一个str==null的判断

"abc".equals(str):这种方法不需要加str==null的判断

三、StringUntils.isEmpty 与 StringUntils.isBlank

isEmpty判断某字段字符串是否为空,为空的标准是str==null或者str.length()==0
StringUntils.isEmpty(null)=true
StringUntils.isEmpty("")=true
StringUntils.isEmpty(" ")=false
StringUntils.isEmpty("bob")=false
StringUntils.isEmpty(" bob ")=false
 
isBlank判断某字符串是否为空或长度为0或由空白符构成
StringUtils.isBlank(null)=true
StringUtils.isBlank("")=true
StringUtils.isBlank(" ")=true
StringUtils.isBlank("\t \n \f \r")=true //对于制表符、换行符、换页符合回车符
StringUtils.isBlank()//都识别为空白符
StringUtils.isBlank("\b")=false
StringUtils.isBlank("bob")=false
StringUtils.isBlank(" bob ")=false

 

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值