StringUtils中isBlank与 isEmpty中的区别

最近频繁用到Apache工具包commons-lang3中的StringUtils,里面有两个判断是否为空的方法:

  1. StringUtils.isBlank()
  2. StringUtils.isEmpty()

两个都为空,如果不仔细区分很容易混淆,今天就仔细研究下。

1.StringUtils.isBlank()用法

该方法是判断字符是否为 null, empty 或者 whitespace,说白了,就是判断是否包含字符串。 如下所示的例子:

 System.out.println(StringUtils.isBlank(null));
 System.out.println(StringUtils.isBlank(""));
 System.out.println(StringUtils.isBlank(" "));
 System.out.println(StringUtils.isBlank("bob"));
 System.out.println(StringUtils.isBlank("  bob  "));

打印结果为:

true true true false false

该方法的源代码如下所示:

public static boolean isBlank(CharSequence cs) {
     		int strLen;
     		if ((cs == null) || ((strLen = cs.length()) == 0))
     			return true;
     		int strLen;
     		for (int i = 0; i < strLen; ++i) {
     			if (!(Character.isWhitespace(cs.charAt(i)))) {
     				return false;
     			}
     		}
     		return true;
  }

所以,该方法能有效判断一个字符是否包含字符,包括不定长度的空字符,如“ ”

2.StringUtils.isEmpty()用法

该方法是判断字符是否为 null, empty,但是并不会判断whitespace,如下所示代码:

    System.out.println(StringUtils.isEmpty(null));
    System.out.println(StringUtils.isEmpty(""));
    System.out.println(StringUtils.isEmpty(" "));
    System.out.println(StringUtils.isEmpty("bob"));
    System.out.println(StringUtils.isEmpty("  bob  "));  

打印结果如下所示:

true true false false false

这个方法的源代码是:

 public static boolean isEmpty(CharSequence cs) {
        return ((cs == null) || (cs.length() == 0));
    }

3.区别判断

综上比较,两个方法最主要的区别是是否进行isWhitespace判断

相关资料: http://stackoverflow.com/questions/11863503/whitespaces-in-java

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×