應(yīng)用場景
判斷字符串、包裝類、集合、對象是否為空。
Hutool工具
字符串工具-StrUtil (hutool.cn)
1. 判斷字符串是否為空(StrUtil的使用)
str1為null,str2是字符串,str3為空字符串,str4是包含不可見字符(空格等)的字符串。
使用StrUtil.isEmpty(str)
和StrUtil.isBlank(str)
/*
測試Hutool工具類 StrUtil ObjectUtil
*/
String str1 = null; //這個判斷為空肯定為true
String str2 = "null"; //這個判斷為空肯定為false
String str3 = ""; //這個判斷為空人們希望為true
String str4 = " "; //這是空白字符,對于isEmpty和isNull來說判斷為true
System.out.println(StrUtil.isEmpty(str1)); //true
System.out.println(StrUtil.isEmpty(str2)); //false
System.out.println(StrUtil.isEmpty(str3)); //true
System.out.println(StrUtil.isEmpty(str4)); //false
System.out.println("**************************");
System.out.println(StrUtil.isBlank(str1)); //true
System.out.println(StrUtil.isBlank(str2)); //false
System.out.println(StrUtil.isBlank(str3)); //true
System.out.println(StrUtil.isBlank(str4)); //true
總結(jié):
isBlank與 isEmpty(CharSequence) 的區(qū)別是: isBlank方法會校驗空白字符,且性能相對于 isEmpty(CharSequence) 略慢。
2.判斷包裝類是否為空(ObjectUtil的使用)
// 對于包裝類只有這兩種情況,用哪個都可以
Integer i1 = null;
Integer i2 = 1;
// 判斷指定對象是否為空,支持:
// 1. CharSequence
// 2. Map
// 3. Iterable
// 4. Iterator
// 5. Array
System.out.println(ObjectUtil.isEmpty(i1)); //true
System.out.println(ObjectUtil.isEmpty(i2)); //false
System.out.println("**************************");
// 檢查對象是否為null 判斷標(biāo)準(zhǔn)為:
// 1. == null
// 2. equals(null)
System.out.println(ObjectUtil.isNull(i1)); //true
System.out.println(ObjectUtil.isNull(i2)); //false
總結(jié):對于包裝類,用哪個都可以
3.判斷集合是否為空(ObjectUtil的使用)
ArrayList list1 = null; //這個判斷為空肯定為true
ArrayList<String> list2 = new ArrayList<>();
ArrayList<String> list3 = new ArrayList<>(List.of("list1","list2","list3")); //這個判斷為空肯定為false
// 判斷指定對象是否為空,支持:
// 1. CharSequence
// 2. Map
// 3. Iterable
// 4. Iterator
// 5. Array
System.out.println(ObjectUtil.isEmpty(list1)); //true
System.out.println(ObjectUtil.isEmpty(list2)); //true
System.out.println(ObjectUtil.isEmpty(list3)); //false
System.out.println("**************************");
// 檢查對象是否為null 判斷標(biāo)準(zhǔn)為:
// 1. == null
// 2. equals(null)
System.out.println(ObjectUtil.isNull(list1)); //true
System.out.println(ObjectUtil.isNull(list2)); //false
System.out.println(ObjectUtil.isNull(list3)); //false
總結(jié):
這是ObjectUtil的isEmpty(obj)方法
public static boolean isEmpty(Object obj) { if (null == obj) { return true; } if (obj instanceof CharSequence) { return StrUtil.isEmpty((CharSequence) obj); } else if (obj instanceof Map) { return MapUtil.isEmpty((Map) obj); } else if (obj instanceof Iterable) { return IterUtil.isEmpty((Iterable) obj); } else if (obj instanceof Iterator) { return IterUtil.isEmpty((Iterator) obj); } else if (ArrayUtil.isArray(obj)) { return ArrayUtil.isEmpty(obj); } return false; }
對于ArrayList集合,該方法調(diào)用了ArrayUtil.isEmpty(obj),進(jìn)行了length的判斷。因此使用isEmpty判斷集合為空。
4.判斷對象是否為空(ObjectUtil的使用)
新建一個Person類
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person{
private Integer id;
private String name;
}
測試
Person p1 =null;
Person p2 = new Person();
Person p3 = new Person(1,"張三");
System.out.println(ObjectUtil.isEmpty(p1)); //true
System.out.println(ObjectUtil.isEmpty(p2)); //false
System.out.println(ObjectUtil.isEmpty(p3)); //false
System.out.println("**************************");
// 檢查對象是否為null 判斷標(biāo)準(zhǔn)為:
// 1. == null
// 2. equals(null)
System.out.println(ObjectUtil.isNull(p1)); //true
System.out.println(ObjectUtil.isNull(p2)); //false
System.out.println(ObjectUtil.isNull(p3)); //false
System.out.println("**************************");
System.out.println(BeanUtil.isEmpty(p1)); //true
System.out.println(BeanUtil.isEmpty(p2)); //true
System.out.println(BeanUtil.isEmpty(p3)); //false
BeanUtil.isEmpty(obj)
總結(jié):判斷Bean是否為空對象,空對象表示本身為null或者所有屬性都為null 此方法不判斷static屬性
Params: bean – Bean對象
ignoreFieldNames – 忽略檢查的字段名文章來源:http://www.zghlxwxcb.cn/news/detail-780907.htmlReturns:是否為空,true - 空 / false - 非空文章來源地址http://www.zghlxwxcb.cn/news/detail-780907.html
到了這里,關(guān)于【Java-Util】Hutool工具類判斷字符串、對象為空的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!