本文共 1304 字,大约阅读时间需要 4 分钟。
我们在进行后端研发的操作的时候,经常性的会进行一些对字符串的非空判定,但是在StringUtil的接口之下有很多进行判定是否为空的条件:
其中最为主要使用的就是StringUtil.isNotBlank(),和StringUtil.isNotEmpty(); 我们先来看看二者接口方法的源代码:isNotBlank()
public static boolean isNotBlank(CharSequence cs) { return !isBlank(cs); }
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; } }
isNotEmpty()
public static boolean isNotEmpty(CharSequence cs) { return !isEmpty(cs); }
isEmpty()
public static boolean isEmpty(CharSequence cs) { return cs == null || cs.length() == 0; }
其实通过方法的底层源代码就可看出二者的区别:
1.isEmpty 没有忽略空格参数,是以是否为空和是否存在为判断依据。
2.isBlank 是在 isEmpty 的基础上进行了为空(字符串都为空格、制表符、tab 的情况)的判断。
二者的主要区别在于对于空格字符串以及特殊符号的字符串,/t,/n的时候isEmpty()返回的结果为true
isBlank返回的结果为false以下是几个实际的例子:
StringUtils.isEmpty("yyy") = falseStringUtils.isEmpty("") = trueStringUtils.isEmpty(" ") = false StringUtils.isBlank("yyy") = falseStringUtils.isBlank("") = trueStringUtils.isBlank(" ") = true
简单来说,blank内容为空,所以空格也是为空
empty是否为空,所以空格非空。
转载地址:http://wbnqf.baihongyu.com/