isEmpty和isBlank的区别

Java中,如果要对一个字符串进行非空校验,一般就是isEmpty(String str)和isBlank(String str)这两个函数。

这俩函数,都是在apache的commons jar包下的StringUtils下的方法。

都是为了判断字符串是否为空,那么这两个函数,有什么不同呢?

先看下源码

  1. isEmpty()
public static boolean isEmpty(String str) {    
  return str == null || str.length() == 0;
}
  1. isBlank()
public static boolean isBlank(String str) {
    int strLen;
    if (str != null && (strLen = str.length()) != 0) {
      for(int i = 0; i < strLen; ++i) {
        // 判断字符是否为空格、制表符、tab
        if (!Character.isWhitespace(str.charAt(i))) {  
          return false;
        }
      }
      return true;
    } else {
      return true;
    }
  }

通过源码能看到什么不同呢?

不同之处在于,对空字符串的判断依据不同。

  1. isEmpty()的判断依据是,该字符串是否为null或是否存在。侧重检查的是字符串的长度,当字符串的长度=0时,isEmpty()即返回true。

  2. isBlank()的判断依据更严格,即使字符串的长度不等于0,但如果是空格、制表符、tab等的情况,依然认定该字符串为空。

结论

一句话,isBlank()的校验范围更广。

编码时,该用哪个?

就一个原则,如果允许包含空格,就使用isEmpty()判空。否则就用isBlank()。

posted @ 2022-09-17 12:38  树叶的一生啊  阅读(733)  评论(0)    收藏  举报