字符串的判空,日常开发是经常要做的一种校验,common-lang包帮我们做了一些字符串判空的封装
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId>
</dependency>
并对外提供了两个方法StringUtils.isBlank
和StringUtils.isEmpty
;
那实际使用的时候具体要使用哪一个呢?先看个示例:
String a = "aaaaaa";
String b = " "; // 空格
String c = null;
System.out.println(StringUtils.isBlank(a));
System.out.println(StringUtils.isBlank(b));
System.out.println(StringUtils.isBlank(c));
System.out.println("---------------------------");
System.out.println(StringUtils.isEmpty(a));
System.out.println(StringUtils.isEmpty(b));
System.out.println(StringUtils.isEmpty(c));
输出结果如下:
在总结差异之前,先去瞄一眼源码;
isBlank源码:
public static boolean isBlank(CharSequence cs) {int strLen;if (cs != null && (strLen = cs.length()) != 0) {for(int i = 0; i < strLen; ++i) {if (!Character.isWhitespace(cs.charAt(i))) {return false;}}return true;} else {return true;}
}public static boolean isNotBlank(CharSequence cs) {return !isBlank(cs);
}
isEmpty源码:
public static boolean isEmpty(CharSequence cs) {return cs == null || cs.length() == 0;
}
public static boolean isNotEmpty(CharSequence cs) {return !isEmpty(cs);
}
就可以很轻易的得到以下的区别:
-
isBlank,当文本为null或者全部为空格的时候都会返回true
-
isEmpty,只要当文本时null的时候才会返回true;全空格也被认定为非空;