Java空指针异常的一个注释和需要注意的问题

Java空指针异常(java.lang.NullPointerException),顾名思义,即对象没有进行实例化便进行了使用。

实例化的意义,就是将对象实例的地址赋值给对象符号。

比如:

String a = new String();

这行代码的作用:在堆中将String的实例构造后,将地址赋值给a。

String a = "123";

这行代码的作用:将常量池中的"123"这个对象实例的地址赋值给a。

引发空指针异常,往往是在获取对象实例地址的时候,由于获取的对象实例并不存在,因此返回的地址为null,而又没进行判断,直接使用了该对象实例(地址)引发的。

例如:

如果request中并不存在"username"字段,则自然getParameter返回的是null。而调用userName(为null)的equals会抛出异常。

小技巧:如果要把某个方法的返回值与常量做比较,把常量放在前面,可以避免调用null对象的equals方法。因为空对象没有equals()方法,不能够使用".equals"方法。

例如上述改成:"root".equals(userName);

因此,我们在进行对象实例地址的获取赋值的时候,获取之后,要进行必要的判断。这种情况多发生在查询数据库、从DAO对象中获取对象等中。

例如一个数据库查询对象DAO的使用:List<***> result =DAO.select();如需在result没有取出结果的时候进行错误处理,这需要包含两个判断:

(1)判断result为null,其业务意义是没有表,

(2)判断result.size()为0,其业务意义是表中没有记录。

即:

注意,这里的result== null要在result.size()==0之前才合理。否则会在没有表的时候,即result = null时,抛出空指针异常。

(0)

相关推荐

  • 如何用JAVA语言编写一个九九乘法表

    大家对于九九乘法表都不陌生,那么如何运用JAVA语言编写一个九九乘法表呢?下面小编教大家学习一下. 操作方法 01 首先在Sublime Text中新建一个Java文件,新建以后会默认添加如下的mai ...

  • eclipse怎么批量替换Java文件某一个单词?

    替换eclipse中 Java文件中某一个单词为另一个单词(为了方便快速对文件的修改). 1.举一个例子,把下面有红色下划线的system改为System, 2.按着ctrl+F键,会出来下面的框 3 ...

  • eclipse中java和jsp代码注释快捷键

    有时候我们在使用eclipse的时候,想快速注释java代码和jsp代码,快捷键是是什么呢,下面来分享一下方法 方法一:java代码注释快捷键 01 第一步打开eclipse,选中要注释的java代码 ...

  • 用java递归算法求一个数字的阶乘

    我们可以用for循环从1到n直接计算一个数字n的阶乘,可是有什么简单一点的方法呢?那小编可就要说到递归算法这个概念了. 操作方法 01 什么是递归算法呢? 它是把问题转化为规模缩小了的同类问题的子问题 ...

  • 如何使用java Swing编写一个简单的窗口

    java中Swing设计是简单的船体界面设计,如何利用Swing编写一个简单的窗口呢? 操作方法 01 打开eclipse新建一个java项目,填好项目名称,点击finish完成 02 新建完项目以后 ...

  • 在eclipse中如何采用java如何建立一个对话框

    在很对的gui中对话框往往会为我们带来很大的方便,是一个应用程序与用户进行交流的主要手段之一.本本实例给出建立一个对话框的方法. 所谓对话框就是跳出来,让我们选中确定还是取消的那个窗口. 1/3:准备 ...

  • 如何采用java语言对一个窗口添加一个按钮

    本实例,是采用eclipse软件建立一个窗口,在窗口中添加入一个按钮,然后显示出按钮的次数. 操作方法 01 打开eclipse软件,并且建立java一个工程,具体如下图: 02 声明,窗口类中的各个 ...

  • java如何返回一个数组

    java在方法中对数组数据处理后再返回数组,可以在方法中创建一个相等类型以及长度新数组,然后便利处理数据并赋值给这个新的数组,然后返回这个新的数组就可以了. 操作方法 01 在项目中创建Main. 0 ...

  • java 空指针异常解决办法

    空指针异常是java中很常见的一种,所以一般都是变量为空导致的,这个异常很容易解决,我来告诉大家如何解决 操作方法 01 空指针异常抛出的异常信息一般是: Exception in thread &q ...