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是怎么产生以及怎么解决的了吗?如果你还有什么问题,可以在评论区留言哦。

关注壹哥,收获多多,每天给你不一样的的知识和启发!

手把手教你解决传说中的NPE空指针异常相关推荐

  1. 手把手教你解决ClassCastException类型转换异常

    一. 前言 最近有很多初学Java的小伙伴,甚至是学习到了JavaWeb及框架阶段的小伙伴,跑来问千锋健哥:该如何解决Java中的ClassCastException类型转换异常?为了给大家解决这个较 ...

  2. 傻瓜教程:手把手教你解决多个应用实例(附代码、手绘图)

    来源:大数据文摘 本文约20000字,建议阅读18分钟. 长文预警!本文从七桥问题引入,将会讲到图论在Airbnb房屋查询.推特推送更新时间.Netflix和亚马逊影片/商品个性化推荐.Uber寻找最 ...

  3. 远程计算机的分辨率调整,手把手教你解决win10系统远程连接设置电脑分辨率的设置方法...

    我们在使用电脑的过程中,有朋遇到win10系统远程连接设置电脑分辨率的问题固然处理起来也不难,然而还是有一些小伙伴不明白win10系统远程连接设置电脑分辨率应该怎样解决.因此就有很多小伙伴来向我咨询w ...

  4. 手把手教您解决90%的自然语言处理问题

    摘要: 本文将讲解如何从零开始,有效地处理自然语言问题的指南和技巧:首先解释如何构建机器学习解决方案来解决上面提到的问题.然后转向更细致的解决方案. 如何将5W和H应用于文本数据! 文本数据无处不在 ...

  5. win7驱动程序未经签名可以使用吗_手把手教你解决win7系统驱动程序签名强制禁用的设置技巧...

    win7系统稳定性好,使用者众多:免不了会遇到win7系统驱动程序签名强制禁用这样的问题要处理,太多的用户是不想看到win7系统驱动程序签名强制禁用这种情况的,靠别人来解决问题太被动,只要我们自己找到 ...

  6. 手把手教你解决PL2303驱动在Win10无法使用

    PL2303驱动在Win10无法使用 如今微软已经停止对Win7的补丁优化,Win10操作系统逐渐普及取代Win7成为主流的操作系统,W10的推出提升操作体验的同时也带来对硬件兼容性的困扰. PL23 ...

  7. 手把手教你解决宏基笔记本wifi开关故障(超详细)

    宏基笔记本wifi连不上怎么办?别慌,咸鱼给你指点迷津.80%的原因都是你无意中关闭了wifi开关.解决步骤如下图所示:

  8. win10共享服务器有的文件夹打不开,手把手教你解决win10系统共享文件夹无法访问的设置方案....

    很多人都懂一些简单的电脑系统问题的解决方案,但是win10系统共享文件夹无法访问的情况,想必大家都遇到过win10系统共享文件夹无法访问的情况吧,那么应该怎么处理win10系统共享文件夹无法访问呢?我 ...

  9. mac虚拟机服务器设置u盘启动不了,手把手教你解决win7系统苹果电脑运行虚拟机后无法识别显示U盘的图文方案...

    许多win7系统用户在工作中经常会遇到win7系统苹果电脑运行虚拟机后无法识别显示U盘的情况,比如近日有用户到本站反映说win7系统苹果电脑运行虚拟机后无法识别显示U盘的问题,但是却不知道要怎么解决w ...

最新文章

  1. python django web典型模块开发实战下载_Django实战 Python Web典型模块与项目开发
  2. HDU1261(高精度乘法+高精度除法)
  3. redis修改端口号后还是占用6379_Redis分布式缓存分布式集群搭建
  4. jquery 获取索引值在一定范围的列表
  5. spark mlib行矩阵(RowMatrix)入门
  6. Html5+Css3小试牛刀
  7. Silverlight 里获取摄像头视频
  8. 非参数统计 作业(第五章第六章)
  9. JAVA架构图的设计与画法
  10. 2019计算机保研 中科院信工所夏令营+中科院软件所九推记录
  11. 2016十月新番简介
  12. 萌新记录自己刷过的题
  13. android h264转yuv,Android使用MediaCodec将YUV硬编成H264
  14. html 时间戳日期转换成字符串,JavaScript时间与时间戳的转换操作实例分析
  15. 领英如何高效加好友,领英一天最多可以发送多少条消息?
  16. php 监控网站是否宕机,监控服务器是否宕机的脚本
  17. 硬币分类android,基于视觉的硬币清算系统研究及其Android应用开发
  18. 论文python爬虫_论的解释|论的意思|汉典“论”字的基本解释
  19. 船舶电子电气工程专业出来的交响_船舶电子电气工程专业
  20. xp系统同步服务器,xp文件同步服务器地址

热门文章

  1. 【快乐离散数学】Discrete Structure 课程计划书
  2. MybatisPlus---从入门到深化
  3. 信息文档安全管理方案
  4. Scapy使用文档中文版
  5. ShareSDK关于微信分享问题
  6. JAVA使用OUTLOOK发送邮件[451 5.7.3 STARTTLS is required to send mail]
  7. 计算机保研备战,【计算机系】“研途有你 更为明朗”计算机系2017级考研/保研交流会...
  8. Polygon Soup
  9. 对gram.y的解析(一)
  10. GOOGLE Weather API 一套google天气图标