StringUtils工具类中的isEmpty方法和isBlank方法的区别:
一、isEmpty()和isBlank()的相同之处:
1、 str.length()==0
class StringUtilsTest{
public static void main(){
Boolean flag = StringUtils.isEmpty(""); //true
Boolean flag = StringUtils.isBlank(""); //true
}
}
2、 null
class StringUtilsTest{
public static void main(){
Boolean flag = StringUtils.isEmpty(null); //true
Boolean flag = StringUtils.isBlank(null); //true
}
}
注:isEmpty(null)和isEmpty("")的区别:
1、null:指未分配内存空间
2、"":指分配了内存空间,值为空字符串
二、isEmpty()和isBlank()的不同之处:
class StringUtilsTest{
public static void main(){
Boolean flag = StringUtils.isEmpty(" "); //false
Boolean flag = StringUtils.isBlank(" "); //true
}
}
不同之处:iSBlank()包括空格,而isEmpty()不包括空格。
三、总结:
1、isEmpty():要求没有任何字符,即str==null 或 str.length()==0;
源码:
public static boolean isEmpty(CharSequence cs) {
return cs == null || cs.length() == 0;
}
2、isBlank():求是空白字符,即无意义字符。其实isBlank判断的空字符是包括了isEmpty的。换句话说,isEmpty判断的范围更小,只是在没有字符的情况下。而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;
}
}