当前位置:首页 > 问答库 > Java基础知识 > 详情

NullPointerException异常二番战|千锋老师给你一招搞定

来源:千锋教育

发布:syq

2022-09-26

Java基础知识 分类问答库

推荐答案

  一. 需求背景

  最近老师给同学们讲了类和对象的基本概念及使用方法,并给大家留了个小练习,练习的题目是用一个数组来存储班级里的学生信息,其中包括学生的学号、姓名、年龄属性,最后要将学生的信息输出。这道题目看起来是很简单的,于是大家就开始疯狂地敲代码了...........

NullPointerException异常

  20分钟后,有学生的代码中出现了bug......

  二. 实现代码

  下图就是一个同学编写的代码,你看看有没有什么问题呢?

  1.学生类

  这是定义的Student学生类,代码如下:

5

  2.学生测试类

  这是定义的学生测试类,代码如下图所示:

6

  3.运行结果

  上面的代码,运行后却出现了如下错误提示:

7

  根据上图的异常信息可知,代码中出现了空指针异常!我们知道,导致空指针异常的原因是因为代码中的某个对象为空!

  4.异常原因分析

  空指针异常很常见,但为什么会出现空指针呢?我们来分析一下具体原因吧......

  根据提示我们可以看到,异常是在StudentTest类中的第28行发生的,那么我们就看看,在第28行哪个对象有可能是空的呢?第28行代码如下:

8

  我们看看第28行代码,到底是哪个对象为空?这里显然是students[i]这个对象为空,从而导致了空指针异常!

  那么为什么students[i]对象是空的呢?我们的Students数组不是已经new过了吗?

  注意:在我们new对象数组的时候,只是为数组开辟了指定长度的内存空间,但这个数组中的元素默认是null哦!接下来我们可以调试下看是不是这样的!

9

  根据debug的结果可知,果然是数组中的元素为null!

  5.异常解决

  现在既然我们已经知道了故障原因,那又该怎么解决这个问题呢?

  我们可以在第28行前new一个学生对象,并将其存储到数组中,如下图所示:

10

  接下来我们把代码运行起来,再进行测试,会发现空指针异常的问题已经得到了解决!现在你知道空指针异常是怎么产生,以及怎么解决了吗?

更多问题在线答疑

导师线上坐镇
解答个性化学习难题

立即提问

上一篇

j查询与javaScript有什么区别

下一篇

Java大牛必会|分布式缓存实现方案之Spring Cache(二)

相关问题

更多 >>
毕设新思路 | 精美的OA管理系统源码你不想要一份吗? 基于Spring体系,事务的特性和实现机制 j查询与javaScript有什么区别 NullPointerException异常二番战|千锋老师给你一招搞定 Java大牛必会|分布式缓存实现方案之Spring Cache(二) Java大牛必会|分布式缓存实现方案之Spring Cache(一)
热门问题
Java基础知识 Java培训机构 Java培训费用 Java培训时间 java培训课程 Java培训就业 零基础学Java java薪资待遇 java学习路线

全国咨询热线400-811-9990