字符串的判空,日常开发是经常要做的一种校验,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;全空格也被认定为非空;
Apache Commons Lang 提供了 StringUtils 工具类,包含 isBlank 和 isEmpty 方法用于字符串的判空。isBlank 不仅检查是否为 null,还会判断字符串是否全由空白字符组成。isEmpty 则只检查字符串是否为 null 或长度为 0。在使用时,如果需要判断字符串是否有实际内容,isBlank 更合适;如果仅关注是否为 null,isEmpty 就足够了。

1万+

被折叠的 条评论
为什么被折叠?



