类型判空
1、int 在初始化的时候=0,使用0==a判断
int a = 0;
if (0 == a) {
System.out.println(true);
}
2、Integer 初始化为null。
Integer a1 = null;
if(a1==null){
System.out.println(true);
}
如果确定为 null,直接使用a1==null判断。
遇到无法确定前端是否传入参数的时候(在mybatis无法拦截),在收参数的时候改为String判断。
3、String判空
String a2 = "";
if (a2 == null || a2 == "") {
System.out.println("a2为空");
}
为了防止空指针首先要判断a2是否为null,再进行""判断。
String判空有很多方式,有String类提供的
String a2 = ""; //a2已经实例化
String a3 = null;
if (a2 == null || a2 == "") {
System.out.println("a2为空");
}
if (a2.isEmpty() || a3.isEmpty()) {
System.out.println("a2,a3 isEmpty");
}
if (a2.length() == 0 || a3.length() == 0) {
System.out.println("a2,a3的长度为null");
}
if(a2.equals("")){
System.out.println("a2实例化使用equals不会报错");
}
// if(a3.equals(null))//这种就会报错 空指针
if(StringUtil.isEmpty(a2)|| StringUtil.isEmpty(a3)){
System.out.println("a2,a3的StringUtil.isEmpty为true");
}
可以看到StringUtils的isEmpty的方法是
/**
* 空
*
* @param str
* @return
*/
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
/**
* 非空
*
* @param str
* @return
*/
public static boolean isNotEmpty(String str) {
return !isEmpty(str);
}
引入import org.apache.commons.lang3.StringUtils;
这种判断增加一个" “,String是” "
String a4 = " ";
if (StringUtils.isBlank(a4)) {
System.out.println("a4为空白字符");
}
4、对象判空
//对象判空
RegionVO regionVO = null;
if (regionVO == null) {
System.out.println("RegionVO对象为空");
}
RegionVO regionVO1 = new RegionVO();
regionVO1.setItemId(1);
if (regionVO1 != null) {
System.out.println("RegionVO对象不为空");
}
但是这种情况下,
如果要判断对象里面的属性是否全部为null,除了一个个判断外,可以利用反射。
public static boolean checkObjAllFieldsIsNull(RegionVO regionVO) {
if (null == regionVO) {
return true;
}
try {
for (Field f : regionVO.getClass().getDeclaredFields()) { //通过反射得到所有列
f.setAccessible(true);//fields.setAccessible(true);的实际作用就是使权限可以访问public,protected,private的字段
if (f.get(regionVO) != null && StringUtils.isNotBlank(f.get(regionVO).toString())) {
return false;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
5、集合判空
list
List list = null;
if (null == list || list.size() == 0) {
System.out.println("list为null");
}
List list1 = new ArrayList();
if(list1.size()==0){
System.out.println("list的size为0");
}
if (null == list || list.isEmpty()) {
System.out.println("list is empty");
}
引入import org.apache.commons.collections.CollectionUtils;
if (CollectionUtils.isEmpty(list)) {
System.out.println("list为空");
}
CollectionUtils.isEmpty()方法也是使用==null 和isEmpty
public static boolean isEmpty(Collection coll) {
return coll == null || coll.isEmpty();
}
public static boolean isNotEmpty(Collection coll) {
return !isEmpty(coll);
}
map
Map map=new HashMap();
Map map1=new HashMap();
map.put(1,"first");
if (map.isEmpty()) {
System.out.println("map为空");
}else {
System.out.println("map不为空");
}
if (map1.isEmpty()) {
System.out.println("map1为空");
}else {
System.out.println("map1不为空");
}