在撸代码过程中判断字符串是否为空的时候你是否遭遇过这样一个问题: 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方案。