1:引入依赖
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.16</version> </dependency>
2:使用方法
String name = " "; String name = "null"; String name = "777" System.out.println(StrUtil.isBlank(name)); System.out.println(StrUtil.isEmpty(name));;
3:StrUtil.isBlank( )
作用:该方法会先将字符串去除头尾空格后再进行判断。如果字符串为 null 或者去除头尾空格后的长度为0,则返回 true;否则返回 false。
//CharSequence是一个描述字符串结构的接口 public static boolean isBlank(CharSequence str) { //初始化一个length 长度变量 int length; // 如果这个字符串不是null, 并且这个字符串的长度不等于0 if (str != null && (length = str.length()) != 0) { //遍历这个字符串的长度 for(int i = 0; i < length; ++i) { //判断字符串 str 中第 i 个字符是否为空白字符(空格、制表符、换行符等)。 //具体来说,str.charAt(i) 表示获取 str 中第 i 个字符, 然后将其与空白字符进行比较, //使用了 CharUtil.isBlankChar 方法。 这个方法是一个自定义的工具类, 可能实现了一些逻辑来判断一个字符是否为空白字符。 if (!CharUtil.isBlankChar(str.charAt(i))) { return false; } } return true; } else { return true; } }
4:StrUtil.isEmpty( )
作用:该方法会判断字符串是否为 null 或长度为 0。如果是,则返回 true;否则返回 false。
public static boolean isEmpty(CharSequence str) { //返回字符串是否为空并且它的长度是否等于 0 return str == null || str.length() == 0; }
5:两者区别
区别:在于对空格的处理。isEmpty 只判断字符串本身是否为空,而 isBlank 还会将字符串前后的空格给去掉后再判断是否为空。
例如,下面的代码:
String str = " "; System.out.println(StrUtil.isEmpty(str)); // 输出结果:false System.out.println(StrUtil.isBlank(str)); // 输出结果:true
在这个例子中,字符串 str 的内容是两个空格,显然不是空字符串(长度不为 0),但是它是一个空白字符串,即只包含空格。因此,isEmpty 方法返回 false,而 isBlank 方法返回 true