一. 需求背景
最近老师给同学们讲了类和对象的基本概念及使用方法,并给大家留了个小练习,练习的题目是用一个数组来存储班级里的学生信息,其中包括学生的学号、姓名、年龄属性,最后要将学生的信息输出。这道题目看起来是很简单的,于是大家就开始疯狂地敲代码了...........
20分钟后,有学生的代码中出现了bug......
二. 实现代码
下图就是一个同学编写的代码,你看看有没有什么问题呢?
1.学生类
这是定义的Student学生类,代码如下:
2.学生测试类
这是定义的学生测试类,代码如下图所示:
3.运行结果
上面的代码,运行后却出现了如下错误提示:
根据上图的异常信息可知,代码中出现了空指针异常!我们知道,导致空指针异常的原因是因为代码中的某个对象为空!
4.异常原因分析
空指针异常很常见,但为什么会出现空指针呢?我们来分析一下具体原因吧......
根据提示我们可以看到,异常是在StudentTest类中的第28行发生的,那么我们就看看,在第28行哪个对象有可能是空的呢?第28行代码如下:
我们看看第28行代码,到底是哪个对象为空?这里显然是students[i]这个对象为空,从而导致了空指针异常!
那么为什么students[i]对象是空的呢?我们的Students数组不是已经new过了吗?
注意:在我们new对象数组的时候,只是为数组开辟了指定长度的内存空间,但这个数组中的元素默认是null哦!接下来我们可以调试下看是不是这样的!
根据debug的结果可知,果然是数组中的元素为null!
5.异常解决
现在既然我们已经知道了故障原因,那又该怎么解决这个问题呢?
我们可以在第28行前new一个学生对象,并将其存储到数组中,如下图所示:
接下来我们把代码运行起来,再进行测试,会发现空指针异常的问题已经得到了解决!现在你知道空指针异常是怎么产生,以及怎么解决了吗?