一 首先是字符串的非空判断
一般用 StringUtils.isNotEmpty(string);或者 StringUtils.isNotBlank
StringUtils底层代码
public static boolean isEmpty(String str) { return str == null || str.length() == 0; } public static boolean isNotEmpty(String str) { return !isEmpty(str); } public static boolean isBlank(String str) { int strLen; if(str != null && (strLen = str.length()) != 0) { for(int i = 0; i < strLen; ++i) { if(!Character.isWhitespace(str.charAt(i))) { return false; } } return true; } else { return true; } } public static boolean isNotBlank(String str) { return !isBlank(str); }
isNotEmpty(str)等价于 str != null && str.length > 0
isNotBlank(str) 等价于 str != null && str.length > 0 && str.trim().length > 0
同理
isEmpty 等价于 str == null || str.length == 0
isBlank 等价于 str == null || str.length == 0 || str.trim().length == 0
str.length > 0 && str.trim().length > 0 ---> str.length > 0二 判断对象为空假如要取具体查询结果的值,需要先将Objetc转化为String,而此时最容易出现空指针,需要判断对象是否为空;
/**
* 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty
*
* @param obj
* @return
*/
@SuppressWarnings("unchecked")
public static boolean isNullOrEmpty(Object obj) {
if (obj == null)
return true;
if (obj instanceof CharSequence)
return ((CharSequence) obj).length() == 0;
if (obj instanceof Collection)
return ((Collection) obj).isEmpty();
if (obj instanceof Map)
return ((Map) obj).isEmpty();
if (obj instanceof Object[]) {
Object[] object = (Object[]) obj;
if (object.length == 0) {
return true;
}
boolean empty = true;
for (int i = 0; i < object.length; i++) {
if (!isNullOrEmpty(object[i])) {
empty = false;
break;
}
}
return empty;
}
return false;
}