常用非空判断方法
String为空的三种状态:null, ""和new String(),
判断某字符串为空的标准是 str==null 或 str.length()==0,
非空判断一
导包:import org.apache.commons.lang3.StringUtils; lang3 或lang包
或:import org.springframework.util.StringUtils;
If(!StringUtils.isEmpty(c)){ 执行代码 }
If(StringUtils.isNotEmpty(c)){ 执行代码 }
非空判断二
if(str!=null&&str.length()>0) { 执行代码 }
非空判断三
if(null != str && !"".equals(str)) { 执行代码 }
String.isEmpty() 方法使用的坑点
!str.isEmpty()
这个里面有一个坑点:
String的isEmpty()方法,在String为null的时候,会出现空指针异常!!!!
因为,”” 和 new String(),会有占位符,也就是创建了对象,而null的时候,String 不会创建占位符。
————–更通俗的说就是:”” 和new String() 的时候,String是有长度的,只是长度为0,而null没有长度。
测试程序
import org.apache.commons.lang.StringUtils;
public class test {
public static void main(String[] args) {
String a = null;
String b = "";
String c = new String();
System.out.println(!a.isEmpty()); //报错java.lang.NullPointerException
System.out.println(!b.isEmpty()); //false
System.out.println(!c.isEmpty()); //false
System.out.println("=======================");
System.out.println(a!=null&&a.length()>0); //当null进行判断时,前半部分已经判断为false,所以后半部分不会报错
System.out.println(b!=null&&b.length()>0);
System.out.println(c!=null&&c.length()>0);
System.out.println("=======================");
System.out.println(null!=a && !"".equals(a));
System.out.println(null!=b && !"".equals(b));
System.out.println(null!=c && !"".equals(c));
System.out.println("=======================");
System.out.println(!StringUtils.isEmpty(a));
System.out.println(!StringUtils.isEmpty(b));
System.out.println(!StringUtils.isEmpty(c));
}
}