判断字符串是否为空:出现NullPointerException?

在撸代码过程中判断字符串是否为空的时候你是否遭遇过这样一个问题: NullPointerException,不瞒你说,我是踩过这样的坑!!!

判断字符串非空一般都有这几个条件: str!=null !str.isEmpty() !"".equals(str)
此处的isEmpty() 和 equals(); 其实效果是一样的,其实都是根据字符串长度是否为0判断是否为空。

1,但是在使用 !str.isEmpty() 搭配str!=null的时候如果不小心把顺序写成:!str.isEmpty() && str!=null 当传来一个str的值为null的时候直接空指针异常值为null显然不能调isEmpty()方法,否则直接NullPointerException。 严谨的写法因该是这样的: str!=null && !str.isEmpty() ,先判断是否为null,在调方法判断是是否为空串。

2,在使用“”.equals(str)搭配 str!=null 的时候,显然不会出现上面的问题,如: !"".equals(str) && str!=null
但是要注意的是如果不小心写成:!str.equals("") && str!=null ,这时候问题又来了,当str 为null的时候直接又是一个空指针异常。

最后总结一下,严谨的搭配方式可以有下面几种:

A, str != null && !str.isEmpty()
B, str != null && !"".equals(str)
当然也可以3个条件一起用:
C, str != null && !"".eqaul("") && !str.isEmpty()

自从翻车一次之后,其实我在后面开发的过程中用的最多的还是B方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值