1. 空指针异常的概念
java是没有指针的,所以java中空指针异常情况中的“指针”是指的是java的引用,空指针就是空引用。
java空指针异常就是引用本身为空,却调用了方法,这个时候就会出现空指针异常情况。
比如:成员变量和方法是属于对象的,在对象中才存在相对应的成员变量和方法,然后通过对象去调用这些成员变量和方法。对于空指针情况,它不指向任何对象,也就没有所谓的成员变量和方法,这个时候用它去调用某些属性和方法,就一定会出现空指针异常情况。
2. 空指针产生的常见情况
- 当对象为null时,调用了其成员方法或属性。
- 在使用equals()比较两个对象是否相等时,当双方是一个常量和一个变量,把变量放在常量前且当变量为空的时候,运行时会报错。
System.out.println(“abc”.equals(str5)); // 推荐:false
System.out.println(str5.equals(“abc”)); // 不推荐:报错,空指针异常NullPointerException
- 对key、value不能为null的容器put为null的key、value值。
- 自己搞的一个集合,当集合为空时,对其遍历会报空指针异常。PS:若使用mybatis做查询返回集合时,当没查到数据时,返回的集合不是空,而是一个size为0的集合。对其遍历不会报空指针异常。