全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决它,最近有空学习C语言,就去深究了下NullPointerException异常的本质。

发生NullPointerException的情况:

  • 调用 null 对象的实例方法。
  • 访问或修改 null 对象的字段。
  • 如果一个数组为null,试图用属性length获得其长度时。
  • 如果一个数组为null,试图访问或修改其中某个元素时。
  • 在需要抛出一个异常对象,而该对象为 null 时。

首先,我们先找到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异常处理  # 的是  # 你可以  # 那是  # 说了  # 如有  # 希望能  # 很简单  # 就去  # 句话  # 报错  # 谢谢大家  # 要了  # 说白了  # 解决办法  # 最常见  # 抛出  # 先看  # 莫过于  # 过程中  # 而该 


相关文章: 微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  官网建站费用明细查询_企业建站套餐价格及收费标准指南  建站之星代理如何优化在线客服效率?  浅析上传头像示例及其注意事项  如何彻底卸载建站之星软件?  英语简历制作免费网站推荐,如何将简历翻译成英文?  建站之星如何助力网站排名飙升?揭秘高效技巧  建站之星图片链接生成指南:自助建站与智能设计教程  定制建站流程解析:需求评估与SEO优化功能开发指南  大连网站设计制作招聘信息,大连投诉网站有哪些?  如何用wdcp快速搭建高效网站?  清除minerd进程的简单方法  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  海南网站制作公司有哪些,海口网是哪家的?  如何自定义建站之星模板颜色并下载新样式?  简单实现Android验证码  如何制作一个表白网站视频,关于勇敢表白的小标题?  香港服务器WordPress建站指南:SEO优化与高效部署策略  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  宝塔新建站点报错如何解决?  如何在IIS7上新建站点并设置安全权限?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  制作网站外包平台,自动化接单网站有哪些?  建站之星如何助力企业快速打造五合一网站?  盐城做公司网站,江苏电子版退休证办理流程?  如何获取上海专业网站定制建站电话?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  建站之星在线客服如何快速接入解答?  建站主机如何选?高性价比方案全解析  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  再谈Python中的字符串与字符编码(推荐)  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何打造高效商业网站?建站目的决定转化率  如何在IIS中配置站点IP、端口及主机头?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何在云主机上快速搭建网站?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站主机无法访问?如何排查域名与服务器问题  如何生成腾讯云建站专用兑换码?  安云自助建站系统如何快速提升SEO排名?  制作网站的基本流程,设计网站的软件是什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。