1、问题概述?
String中自带的isEmpty和isBlank方法和StringUtils工具类中的isEmpty和isBlank方法使用是不同的,使用不当会出现严重问题。
【1、String中isEmpty和isBlank比较】
1、String中isEmpty和isBlank:如果只为null,会抛出异常。
2、String中isEmpty和isBlank不同:isEmpty会将空字符串算作字符串,如String a=" ";长度为1。
isBlank会忽略空字符串,如String a=" ";长度为0。
【2、StringUtilsisEmpty和isBlank比较】
1、StringUtils.isEmpty():检查字符串是否为null或者为"",返回true如:对于空白字符“ ”返回false
2、StringUtils.isBlank():功能与isEmpty()基本相同,但是还过滤空格、制表符、换行符等如对于空白字符“ ”,返回true
2、String中自带的isEmpty和isBlank用法
2.1、isEmpty用法
【isEmpty源码】
从源码中可以看出本质就是判断长度是否为0
@Override
public boolean isEmpty() {
return value.length == 0;
}
所以如果字符串为null,isEmpty会抛出异常:

【isEmpty用法】
public class Test {
public static void main(String[] args) {
String str="";
System.out.println(str.isEmpty());//true,为空
String str1=" ";
System.out.println(str1.isEmpty());//false,不为空
}
}
2.2、isBlank用法
【isBlank源码】
isBlank中排除了“ ”空字符串的情况。
public static int indexOfNonWhitespace(byte[] value) {
int length = value.length;
int left = 0;
while (left < length) {
char ch = getChar(value, left);
if (ch != ' ' && ch != '\t' && !CharacterDataLatin1.instance.isWhitespace(ch)) {
break;
}
left++;
}
return left;
}
3、StringUtils用法?
我们有很多的场景需要判断对象是否为空或者为null的情况,使用不当容易出现抛异常,从而导致程序运行异常的情况,这个时候我们借助StringUtils工具类将会非常的省心。
使用需要导入一下包:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
3.1、StringUtils.isEmpty()用法?

【1、isEmpty()和isNotEmpty()用法】
值如果为null或者“”,返回值都会true,isNotEmpty()用法与之相反
public class Test1 {
public static void main(String[] args) {
String str="";
System.out.println(StringUtils.isEmpty(str));//true
String str=" ";//此处用法与isBlank不同,空白字符不算空
System.out.println(StringUtils.isEmpty(str));//false
String str1=null;
System.out.println(StringUtils.isEmpty(str1));//true
String str2="123";
System.out.println(StringUtils.isEmpty(str2));//false
}
}
【2、isAllEmpty()用法】
接收数组类型,所有值都为null或者“”,返回true
public class Test1 {
public static void main(String[] args) {
String []str={null,null,"123"};
System.out.println(StringUtils.isAllEmpty(str));//false
String []str1={"","",""};
System.out.println(StringUtils.isAllEmpty(str1));//true
String []str2={null,null,null};
System.out.println(StringUtils.isAllEmpty(str2));//true
}
}
【3、isNoneEmpty()和isAnyEmpty()】
isNoneEmpty():所有值都不为null或者“”,返回true,isAnyEmpty()只要有一个值为null或者“”,返回true.
public class Test1 {
public static void main(String[] args) {
String []str={null,null,"123"};
System.out.println(StringUtils.isNoneEmpty(str));//false
String []str1={"","",""};
System.out.println(StringUtils.isNoneEmpty(str1));//false
String []str2={null,null,null};
System.out.println(StringUtils.isNoneEmpty(str2));//false
String []str3={"1","2","3"};
System.out.println(StringUtils.isNoneEmpty(str3));//true
}
}
3.2、StringUtils.isBlank()用法?

【1、isBlank()用法与isNotBlank()用法】
public class Test2 {
public static void main(String[] args) {
String str=null;
System.out.println(StringUtils.isBlank(str));//true
String str1="";
System.out.println(StringUtils.isBlank(str1));//true
String str2=" ";//此处有别于isEmpty,空白字符也为空
System.out.println(StringUtils.isBlank(str2));//true
String str3="123";
System.out.println(StringUtils.isBlank(str3));//false
}
}
isAllBlank、isAnyBlank、isNoneBlank与isAllEmpty、isAnyEmpty、isNoneBlank功能相似,不举例子了。
3.3、StringUtils.isEmpty和StringUtils.isBlank不同之处
StringUtils.isEmpty():
检查字符串是否为null或者为"",返回true
如:对于空白字符“ ”返回false
StringUtils.isBlank():
功能与isEmpty()基本相同,但是还过滤空格、制表符、换行符等
如对于空白字符“ ”,返回true
389

被折叠的 条评论
为什么被折叠?



