当前位置: 代码迷 >> 综合 >> 字符串判空,isBlank 和 isEmpty 到底选那个?
  详细解决方案

字符串判空,isBlank 和 isEmpty 到底选那个?

热度:65   发布时间:2023-12-17 07:01:00.0

字符串的判空,日常开发是经常要做的一种校验,common-lang包帮我们做了一些字符串判空的封装

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId>
</dependency>

并对外提供了两个方法StringUtils.isBlankStringUtils.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;全空格也被认定为非空;