Java空指针异常(java.lang.NullPointerException)
Java空指针异常(java.lang.NullPointerException),顾名思义,即对象没有进行实例化便进行了使用。实例化的意义,就是将对象实例的地址赋值给对象符号。
比如 String a = new String();即在堆中将String的实例构造后,将地址赋值给a。 String a = “123”;即将常量池中的“123”这个对象实例的地址赋值给a。
引发空指针异常,往往是在获取对象实例地址的时候,由于获取的对象实例并不存在,因此返回的地址为null,而又没进行判断,直接使用了该对象实例(地址)引发的。
例如:
String userName = request.getParameter("username");
If (userName.equals("root"))
{....}
如果request中并不存在“username”字段,则自然getParameter返回的是null。而调用userName(为null)的equals会抛出异常。
小技巧:如果要把某个方法的返回值与常量做比较,把常量放在前面,可以避免调用null对象的equals方法。例如上述改成: "root".equals(userName);
因此,我们在进行对象实例地址的获取赋值的时候,在之后,要进行必要的判断。这种情况多发生在,查询数据库、从DTO对象中获取对象等中。
例如一个数据库查询对象DAO的使用: List<***> result = DAO.select(); 如需在result没有结果的时候进行错误处理,这需要包含两个判断: result为null或者result.size()为0。其业务意义分别是没有表和表中没有记录。即 : if(result == null || result.size() == 0){.......} ,注意,这里的result == null要在result.size() == 0之前才合理。否则会在没有表的时候,即result==null时,抛出空指针异常。