Java空指针异常在工作中经常看到,之前我不是很懂这个概念以为如果某个对象没初始化就会报错结果不是,我通过debug打断点发现了具体原因和解决方法。
原因:
- 在excel上传解析的时候发现,如果没有初始化对象,里面就是null的(没有分配空间),这个时候它是不会报空指针异常的。
- 如果对象是空的,然后这个时候你通过这个对象去调任何方法都会报空指针异常。
- 如果你调的方法入参是这个空对象,这个时候不会报空指针异常(具体得看方法内部逻辑)。
解决方法:
- 如果是空对象调方法入参为非空参数,例如
String s = null;
s.equals("test");
可以改成
"test".equals(s);
- 可以用各种工具类来实现想要的功能,例如
String s = null;
StringUtils.isEmpty(s);
常见的空指针异常,判断该List长度是否为0且不为空:
List<String> list = null;
if (list.size() > 0 && list != null){
list.add("test");
}
结果会报空指针异常,应该先进行list本身的判断,再进行长度判断:
List<String> list = null;
//先判断对象是否为空,如果为空则为false,就不会进行后面的判断
if (list != null && list.size() > 0){
list.add("test");
}