动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

什么是空指针异常

05-28 17:12 3994浏览
举报 T字号
  • 大字
  • 中字
  • 小字

在我们初步接触Java异常的时候可能就已经听说过空指针异常,那么什么样的异常叫做空指针异常呢?空指针异常是指java中的异常类。当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:

  • 调用 null 对象的实例方法。
  • 访问或修改 null 对象的字段。
  • 将 null 作为一个数组,获得其长度。
  • 将 null 作为一个数组,访问或修改其时间片。
  • 将 null 作为 Throwable 值抛出。

当我们声明一个引用类型的变量,实际上是创建一个指向对象的指针。

看一下下面代码,声明了一个原始类型(值类型)的int变量:

int y;
y=110;

在上面代码中,声明的int型变量y,Java会将它初始化为0。第二行给它赋值为110,110这个值将被写入y指向的内存位置。

但如果声明一个引用类型变量就会发生不同的情况,看一下下面的代码:

Integer num;
num = new Integer(110);

第一行中声明一个变量num,它不是原始类型(值类型)。因为Integer是引用类型,所以它包一个指针。没有为num变量赋值,初始值就为null。

第二行new关键字,实例化一个Integer类型的对象,并且把对象的指针赋值给num。可以用点(.)调用对象的属性或方法。

当我声明引用类型变量时,没有为什么实例化创始对象时,我们调用对象的方法或属性时,就会发生空指针异常(NullPointerException)。

大多数情况下,编译器会检查这个问题,提示num可能没有被初始化。但有些情况下,代码不是直接创建那个对象。例如,下面的代码,

public void doSomething(SomeObject obj) {
   //do something to obj
}

上面代码,可能出现调用之前没有为obj传入一个创建的对象,但这种情况Java编译器也检查不到。也有可能传入了,但是下面这样的调用:

doSomething(null);

在这种情况下,obj是null,如果在方法中调用obj的属性,就会发生空指针异常(NullPointerException)。由于这是程序员的错误,程序员需要那个错误信息查找问题。

相信大家看到这里,已经知道了什么是空指针异常,接下来我们就要学习如何使用空指针异常,我们可以到动力节点在线的视频课程中学习空指针异常的使用。

0人推荐
共同学习,写下你的评论
0条评论
杨晶珍
程序员杨晶珍

98篇文章贡献357785字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消