在外文网站上看到的:
1.调用空对象的实例方法。
2.访问或修改空对象的字段。
3.将null的长度看作是一个数组。
4.访问或修改null的插槽,就像它是一个数组一样。
5.如同Throwable值一样抛出null。
-------------------------
1:的NullPointerException由RuntimeException的派生出来,是一个运行级别的异常意思是说可能会在运行的时候才会被抛出,而且需要看这样的运行级别异常是否会导致你的业务逻辑中断。
2:空指针异常发生在对象为空,但是引用这个对象的方法。例如:String s = null; //对象s为空(null)int length = s.length(); //发生空指针异常
3:一个变量是null,并且只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以生命一个变量时最好给它分配好内存空间,给予赋值
。4:比如变量为空,而你没有去判断,就直接使用,就会出现NullPointException。写程序时严谨些,尽量避免了,例如在拿那个变量与一个值比较时,要很先做好该异常的处理如:if(str == null){System.out.println(“为空“)!; }当然也可以将这个值写在前面进行比较的,例如,判断一个String的实例s是否等于“a”,不要写成s.equals(“a”),这样写容易抛出NullPointerException,而写成“a ” .equals(S)就可以避免这个问题。不过对变量先进行判空后再进行 操作比较好
5:尽量避免返回空值,方法的返回值不要定义成为一般的类型,而是用数组这样如果想要返回空的时候,就返回一个没有元素的数组就能避免许多不必要的空指针异常,使用NullObject返回代替返回空值确是一种不错的选择。
还有一种是参数齐全在调用service时报空指针的原因是在声明service是未添加@autowired或@Resource导致没有装配bean导致。