手把手教你解决传说中的NPE空指针异常
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空指针异常相关推荐
- 手把手教你解决ClassCastException类型转换异常
一. 前言 最近有很多初学Java的小伙伴,甚至是学习到了JavaWeb及框架阶段的小伙伴,跑来问千锋健哥:该如何解决Java中的ClassCastException类型转换异常?为了给大家解决这个较 ...
- 傻瓜教程:手把手教你解决多个应用实例(附代码、手绘图)
来源:大数据文摘 本文约20000字,建议阅读18分钟. 长文预警!本文从七桥问题引入,将会讲到图论在Airbnb房屋查询.推特推送更新时间.Netflix和亚马逊影片/商品个性化推荐.Uber寻找最 ...
- 远程计算机的分辨率调整,手把手教你解决win10系统远程连接设置电脑分辨率的设置方法...
我们在使用电脑的过程中,有朋遇到win10系统远程连接设置电脑分辨率的问题固然处理起来也不难,然而还是有一些小伙伴不明白win10系统远程连接设置电脑分辨率应该怎样解决.因此就有很多小伙伴来向我咨询w ...
- 手把手教您解决90%的自然语言处理问题
摘要: 本文将讲解如何从零开始,有效地处理自然语言问题的指南和技巧:首先解释如何构建机器学习解决方案来解决上面提到的问题.然后转向更细致的解决方案. 如何将5W和H应用于文本数据! 文本数据无处不在 ...
- win7驱动程序未经签名可以使用吗_手把手教你解决win7系统驱动程序签名强制禁用的设置技巧...
win7系统稳定性好,使用者众多:免不了会遇到win7系统驱动程序签名强制禁用这样的问题要处理,太多的用户是不想看到win7系统驱动程序签名强制禁用这种情况的,靠别人来解决问题太被动,只要我们自己找到 ...
- 手把手教你解决PL2303驱动在Win10无法使用
PL2303驱动在Win10无法使用 如今微软已经停止对Win7的补丁优化,Win10操作系统逐渐普及取代Win7成为主流的操作系统,W10的推出提升操作体验的同时也带来对硬件兼容性的困扰. PL23 ...
- 手把手教你解决宏基笔记本wifi开关故障(超详细)
宏基笔记本wifi连不上怎么办?别慌,咸鱼给你指点迷津.80%的原因都是你无意中关闭了wifi开关.解决步骤如下图所示:
- win10共享服务器有的文件夹打不开,手把手教你解决win10系统共享文件夹无法访问的设置方案....
很多人都懂一些简单的电脑系统问题的解决方案,但是win10系统共享文件夹无法访问的情况,想必大家都遇到过win10系统共享文件夹无法访问的情况吧,那么应该怎么处理win10系统共享文件夹无法访问呢?我 ...
- mac虚拟机服务器设置u盘启动不了,手把手教你解决win7系统苹果电脑运行虚拟机后无法识别显示U盘的图文方案...
许多win7系统用户在工作中经常会遇到win7系统苹果电脑运行虚拟机后无法识别显示U盘的情况,比如近日有用户到本站反映说win7系统苹果电脑运行虚拟机后无法识别显示U盘的问题,但是却不知道要怎么解决w ...
最新文章
- python django web典型模块开发实战下载_Django实战 Python Web典型模块与项目开发
- HDU1261(高精度乘法+高精度除法)
- redis修改端口号后还是占用6379_Redis分布式缓存分布式集群搭建
- jquery 获取索引值在一定范围的列表
- spark mlib行矩阵(RowMatrix)入门
- Html5+Css3小试牛刀
- Silverlight 里获取摄像头视频
- 非参数统计 作业(第五章第六章)
- JAVA架构图的设计与画法
- 2019计算机保研 中科院信工所夏令营+中科院软件所九推记录
- 2016十月新番简介
- 萌新记录自己刷过的题
- android h264转yuv,Android使用MediaCodec将YUV硬编成H264
- html 时间戳日期转换成字符串,JavaScript时间与时间戳的转换操作实例分析
- 领英如何高效加好友,领英一天最多可以发送多少条消息?
- php 监控网站是否宕机,监控服务器是否宕机的脚本
- 硬币分类android,基于视觉的硬币清算系统研究及其Android应用开发
- 论文python爬虫_论的解释|论的意思|汉典“论”字的基本解释
- 船舶电子电气工程专业出来的交响_船舶电子电气工程专业
- xp系统同步服务器,xp文件同步服务器地址
热门文章
- 【快乐离散数学】Discrete Structure 课程计划书
- MybatisPlus---从入门到深化
- 信息文档安全管理方案
- Scapy使用文档中文版
- ShareSDK关于微信分享问题
- JAVA使用OUTLOOK发送邮件[451 5.7.3 STARTTLS is required to send mail]
- 计算机保研备战,【计算机系】“研途有你 更为明朗”计算机系2017级考研/保研交流会...
- Polygon Soup
- 对gram.y的解析(一)
- GOOGLE Weather API 一套google天气图标