写点什么

Java 常见异常:NPE 空指针异常怎么解决?

作者:千锋IT教育
  • 2023-01-03
    北京
  • 本文字数:984 字

    阅读完需:约 3 分钟

1. 前言

最近有好几个初学 java 的小伙伴,甚至是学习到 JavaWeb、框架阶段的小伙伴,跑来问健哥,该如何解决 Java 中的 NullPointerException 空指针异常。

因为 NPE 是初学者常见的典型异常,所以健哥在这里专门写一篇文章,来手把手地教大家分析解决这个经典异常问题。

2. 异常现象

首先我们来看看这个既简单,又经常出现的空指针异常 NullPointerException,下面这段代码运行后就会抛出 NPE 空指针异常。

package test;
/** * @author 千锋健哥 */public class TestNullPoint {
public static void main(String[] args) { String str = "千锋健哥"; boolean flag = str.equals("千锋健哥"); System.out.println("===equals对比结果====" + flag);
str = null; flag = str.equals("千锋健哥"); System.out.println("===equals对比结果====" + flag); }}
复制代码

运行结果:



3. 异常原因

那么上述代码为什么会产生 NPE 问题呢?下面健哥就来给各位小伙伴解释一下产生该异常的原因。

String str = "千锋健哥"; 字符串中此时的值为”千锋健哥“;

boolean flag = str.equals("千锋健哥");

调用 str 字符串的 equals 方法进行字符串比较,此时 str 变量有具体的值,值为”千锋健哥“,所以可以正常调用;str = null;

给 str 字符串设置为空值 null,我们知道 null 没有任何方法可以调用;

所以代码当运行到 flag = str.equals("千锋健哥");这行代码的时候,就会抛出空指针异常,因为此时 str 变量的值是 null。

4. 解决办法

既然我们现在找到了问题原因,那么我们很容易就能解决该问题了,解决思路如下:

当程序一旦抛出 NullPointerException 异常,肯定是因为某个变量的值为 null,而你又引用了这个变量,null 空值是没有任何方法可以调用的,所以抛出了这个异常;

明确原因之后,接着就要定位产生异常的位置,比如我们从上面的运行截图中,可以看到异常所在的代码行数为 TestNullPoint 类的第 14 行,报错如下:



也就是说在第 14 行代码中,有值为 null 的变量调用了方法,我们只需要找到那个变量将它的值改为非空即可。



修改后的代码如下:



5. 总结

NullPointerException 空指针异常是因为有变量的值为空 null,然后我们在代码中又调用了这个变量的方法而导致的。我们只需要找到这个变量,然后将这个变量的值改为非空即可解决 NPE 异常。

现在你知道 NPE 是怎么产生以及怎么解决的了吗?如果你还有什么问题,可以在评论区留言哦!

用户头像

国内IT培训机构良心品牌 2022-08-02 加入

学习资料下载获取,添加QQ:3547925594

评论

发布
暂无评论
Java常见异常:NPE空指针异常怎么解决?_千锋IT教育_InfoQ写作社区