java 出现NullPointerException的原因及解决办法

日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决它,最近有空学习C语言,就去深究了下NullPointerException异常的本质。
发生NullPointerException的情况:
首先,我们先找到Java.lang.NullPointerException这个类,内容很简单:
package java.lang;
/**
* Thrown when a program tries to access a field or method of an object or an
* element of an array when there is no instance or array to use, that is if the
* object or array points to {@code null}. It also occurs in some other, less
* obvious circumstances, like a {@code throw e} statement where the {@link
* Throwable} reference is {@code null}.
*/
public class NullPointerException extends RuntimeException {
private static final long serialVersionUID = 5162710183389028792L;
/**
* Constructs a new {@code NullPointerException} that includes the current
* stack trace.
*/
public NullPointerException() {
}
/**
* Constructs a new {@code NullPointerException} with the current stack
* trace and the specified detail message.
*
* @param detailMessage
* the detail message for this exception.
*/
public NullPointerException(String detailMessage) {
super(detailMessage);
}
}
NullPointerException翻译过来便是空指针,接下来我们首先要了解的是什么是指针,对于非C/C++的程序员来说,很多其它语言开发者对指针的概念很模糊,说白了,指针就是存储变量的内存地址,在c语言里面,NULL表示该指针不指向任何内存单元,0表示指向地址为0的单元(这个单元一般是不能使用的)。先看一段C语言代码:
void main() {
int* i = NULL;
printf("%#x\n", i);
printf("%#x\n", &i);
system("pause");
}
在C语言里,你可以读取NULL本身的值(void *)0,即0,但是读取它指向的值,那是非法的,会引发段错误。而Java里面的NULL就是直接指向了0,上述也说了,指向地址为0的单元,一般是不能使用的。
一句话总结:因为指向了不可使用的内存单元,虚拟机无法读取它的值,最终导致NullPointerException。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# NullPointerException
# NullPointerException的原因总结
# NullPointerException解决办法
# java调用webservice的.asmx接口的使用步骤
# Java中ExecutorService和ThreadPoolExecutor运行原理
# Java调用WebService接口作测试
# JAVA调用SAP WEBSERVICE服务实现流程图解
# JAVA WSIMPORT生成WEBSERVICE客户端401认证过程图解
# Java 使用Axis调用WebService的示例代码
# java使用xfire搭建webservice服务的过程详解
# Java使用ExecutorService来停止线程服务
# Java解析调用webservice服务的返回XML串详解
# 在spring boot中使用java线程池ExecutorService的讲解
# Java中避免NullPointerException的方法总结
# Java xml出现错误 javax.xml.transform.TransformerExcept
# Zend Studio for Eclipse的java.lang.NullPointerExcep
# java静态工具类注入service出现NullPointerException异常处理
# 的是
# 你可以
# 那是
# 说了
# 如有
# 希望能
# 很简单
# 就去
# 句话
# 报错
# 谢谢大家
# 要了
# 说白了
# 解决办法
# 最常见
# 抛出
# 先看
# 莫过于
# 过程中
# 而该
相关文章:
如何在阿里云购买域名并搭建网站?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
制作网站的基本流程,设计网站的软件是什么?
如何设置并定期更换建站之星安全管理员密码?
Swift中swift中的switch 语句
如何在Windows虚拟主机上快速搭建网站?
详解jQuery停止动画——stop()方法的使用
如何用PHP快速搭建CMS系统?
如何快速上传建站程序避免常见错误?
,石家庄四十八中学官网?
如何快速查询网站的真实建站时间?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
常州自助建站费用包含哪些项目?
浅析上传头像示例及其注意事项
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
5种Android数据存储方式汇总
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
建站主机选购指南:核心配置优化与品牌推荐方案
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
建站主机服务器选型指南与性能优化方案解析
建站之星伪静态规则如何正确配置?
建站之星导航菜单设置与功能模块配置全攻略
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何通过智能用户系统一键生成高效建站方案?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
如何挑选最适合建站的高性能VPS主机?
如何批量查询域名的建站时间记录?
高端网站建设与定制开发一站式解决方案 中企动力
广东专业制作网站有哪些,广东省能源集团有限公司官网?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
定制建站流程步骤详解:一站式方案设计与开发指南
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
如何通过二级域名建站提升品牌影响力?
建站之星代理如何获取技术支持?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
如何在IIS7中新建站点?详细步骤解析
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
如何在万网ECS上快速搭建专属网站?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
建站之星安装需要哪些步骤及注意事项?
深入理解Android中的xmlns:tools属性
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
建站之星安装模板失败:服务器环境不兼容?
如何选择靠谱的建站公司加盟品牌?
股票网站制作软件,网上股票怎么开户?
如何通过PHP快速构建高效问答网站功能?
*请认真填写需求信息,我们会在24小时内与您取得联系。