非空判断的个人理解

来源:互联网 发布:mac u盘安装win7教程 编辑:程序博客网 时间:2024/05/09 00:14
一        首先是字符串的非空判断

一般用  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;
}