isEmpty和isBlank的区别
Java中,如果要对一个字符串进行非空校验,一般就是isEmpty(String str)和isBlank(String str)这两个函数。
这俩函数,都是在apache的commons jar包下的StringUtils下的方法。
都是为了判断字符串是否为空,那么这两个函数,有什么不同呢?
先看下源码
- isEmpty()
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
- 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;
}
}
通过源码能看到什么不同呢?
不同之处在于,对空字符串的判断依据不同。
-
isEmpty()的判断依据是,该字符串是否为null或是否存在。侧重检查的是字符串的长度,当字符串的长度=0时,isEmpty()即返回true。
-
isBlank()的判断依据更严格,即使字符串的长度不等于0,但如果是空格、制表符、tab等的情况,依然认定该字符串为空。
结论
一句话,isBlank()的校验范围更广。
编码时,该用哪个?
就一个原则,如果允许包含空格,就使用isEmpty()判空。否则就用isBlank()。

浙公网安备 33010602011771号