Java 空指针异常(java.lang.NullPointerException)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/IterZebra/article/details/6756391

 

  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时,抛出空指针异常。

展开阅读全文

没有更多推荐了,返回首页