空指针异常出现的几种原因及解决方法

这篇具有很好参考价值的文章主要介绍了空指针异常出现的几种原因及解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

空指针异常:

空指针容易出现的场景

避免方案


空指针异常:

什么是空,什么是指针?

空就是:小明过生日,小华送给了小明一个“礼物”,这个“礼物”只有一个外面的包装但是里面什么都没有,这个礼物就是"",而空则是小华压根没有给小华准备礼物,这个就是null。

什么是指针:指针:指针存放的是内存地址。

所以:当指针不指向任何内存地址时,就叫做空指针,但是你偏偏在这时还调用了它,则会抛出空指针异常(java.lang.NullPointerException

例:

int[] array = null; 
System.out.println(array[0]);

这个时候原本array数组是个空指针,没有创建新的对象,在调用这个数组的时候就会产生空指针异常的错误!程序运行会显示java.lang.NullPointerException的异常提示。

为什么会产生空指针异常?

如上面的 int[] array = null; 你在栈内存中开辟了一个存储空间叫array,却没有在堆内存里开辟int类型的数组空间,所以栈内存的array没有存放任何内存地址,这时候你又去调用没有的东西,就会产生空指针异常。

一句话总结:空指针异常无非是因为对象为null的情况下去调用该对象所拥有的方法或者成员变量造成的。

空指针容易出现的场景

1.某一对象没有被实例化,就拿来使用,即调用此对象的方法,会抛空指针异常;如:

/错误写法
List lt = null;
lt.add("哈哈哈");
​
//正确写法
List lt = new ArrayList();
lt.add("哈哈哈");

2.获取从别的对象传过来的对象为空,如:String str=null;

3.数据库查询方面的空指针异常,如:数据库中储存的值为null或不存在;

4.结果集是空的,或者未初始化就被调用了。

避免方案

1.类型转换-优先使用String.valueOf(XXX)方法代替XXX.toString()

当程序代码需要对象的字符串表示形式时,请避免使用该对象的toString方法。如果你的对象的引用等于null,NullPointerException则会抛出,使用静态String.valueOf方法,该方法不会抛出任何异常并打印”null”.

2.类初始化-优先使用实例化代替默认null

class被声明了类型, 默认 class = null; 这样在调用class中方法的时候系统只能给你个空指针异常, 给其实例化就好了:class = new Class();如:List lt = new ArrayList();

3.方法的返回值不要定义成为一般的类型,而是用数组。

这样如果想要返回null的时候,就返回一个没有元素的数组,能避免许多不必要的NullPointerException。

  总之,NullPointerException是由RuntimeException派生出来的,是一个运行时异常,其意指可能会在运行的时候才会被抛出,一个变量是null,,即只有其名,没有实值内容,也没分配内存。当你要去取他的长度,对他进行操作就会出现NullPointException,所以声明变量时最好给它分配好内存空间,给予赋值。

  例如拿该变量与一个值比较时,要么先做好该异常的处理,要么给它进行判断,如:

if (str != null) {
​
}

  判断一个String的实例a是否等于“b”时,不要写成a.equals(“b”),这样容易抛NullPointerException,而写成”b”.equals(a)就可以避免这个问题,不过对变量先进行判空后再进行操作更好。

该文链接:http://t.csdn.cn/KEwge文章来源地址https://www.toymoban.com/news/detail-410424.html

到了这里,关于空指针异常出现的几种原因及解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springBoot使用webSocket的几种方式以及在高并发出现的问题及解决

    1、该类可以作为一个基础的安全抽象层,后续项目中如果需要做认证的操作,都可以继承该抽象类 ClientUserInfoService 大家可以看作一个 UserService 就是一张用户表的service类 这里认证采用的是 jwt的方式,大家可以换成自己的 2、 大家这里注意,我们使用的是 javax.websocket.Sessio

    2024年02月09日
    浏览(50)
  • 解决哈希冲突的几种方法

    哈希函数是一个映像,把任意长度的输入,通过Hash算法变换成固定长度的输出,这个输出就是Hash值; 当两个不同的输入,产生了同一个输出值即为哈希冲突 开放寻址法的核心思想是, 如果出现了散列冲突,我们就重新探测一一个空闲位置,将其插入 。比如,我们可以使用

    2024年01月17日
    浏览(37)
  • 电脑出现错误代码0xc000000e怎么办,解决错误代码0xc000000e的几种办法

    最近有看到小伙伴们提问,电脑出现错误代码0xc000000e怎么办?一旦电脑提示这种错误代码就会导致电脑无法正常运行,软件或游戏将会不能打开,今天就关于这个问题,教大家解决错误代码0xc000000e的几种办法。 1.硬盘错误:出现错误代码0xc000000e的原因可能是硬盘驱动器出现

    2024年02月08日
    浏览(59)
  • 解决前端跨域的几种方法

    一、跨域报错         在我们实际开发过程中,都有遇到过跨域的问题,跨域报错如下: 二、为什么会报跨域?         跨域的本质是浏览器基于同源策略的一种安全手段,主要是考虑到用户的信息安全。何为同源策略呢?同源策略是一种约定,它是浏览器最核心也

    2024年02月09日
    浏览(52)
  • nginx405异常原因及解决方法

    nginx405异常原因与解决方法,最详细解释 访问接口出现 出现这个原因是因为当前接口没有在nginx中配置解析到的路径 例如你通过post访问了www.xxx.com/v1/getinfo 但是v1这个路径并没有在nginx中配置,所以nginx自动匹配到的就是/路径,但是/路径是访问静态资源的,只能通过get方法访

    2024年02月06日
    浏览(37)
  • 织梦dedecms网站模板乱码的几种解决方法

    织梦Dedecms网站安装模板乱码的问题很多站长们都可能会遇到,一个不留神,没有注意到gbk与utf8的编码格式,一安装就乱码了等等;出现模板乱码这种问题大多数是因此dedecms模板编码问题导致的乱码,解决办法我们可以使用一些相关软件打开,然后设置页面编码即可了。 一、

    2024年02月03日
    浏览(41)
  • 如何解决电脑无声问题:排除故障的几种常见方法

    大家好,今天我们来讨论一下处理电脑没有声音的故障。当你突然发现电脑静音无声时,需要逐步排除可能的问题,但总体而言,声音故障是相对容易解决的。接下来,我们将介绍一些排除电脑无声问题的方法。 第一步:检查是否处于静音或音响线松动状态。 检查是否处于

    2024年02月14日
    浏览(38)
  • Ubuntu虚拟机网络无法连接的几种解决方法

    1.重启网络编辑器 1.1点击编辑------选择虚拟网络编辑器 1.2点解更改设置,随后点击恢复默认值 2.重启虚拟机网络适配器 2.1点击编辑虚拟机设置 2.2点击移除网络适配器 2.3点击添加------选择网络适配器---------点击完成 3.重启虚拟机网络服务器 ctrl+alt+t打开虚拟机命令终端,依次

    2024年02月14日
    浏览(52)
  • maven的依赖下载不下来的几种解决方法

    每次部署测试环境,从代码库拉取代码,都会出现缺少包的情况。然后找开发一通调试,到处拷包。 方案一:pom文件注释/取消注释 注释掉pom.xml里的报红色的依赖(同时可以把本地maven库repo里对应的包删除),Import Changes,再取消注释,重新Import Changes。如果右下角没有Impo

    2024年02月10日
    浏览(50)
  • 解决maven的依赖下载不下来的几种方法

    每次部署测试环境,从代码库拉取代码,都会出现缺少包的情况。然后找开发一通调试,到处拷包。 方案一:pom文件注释/取消注释 注释掉pom.xml里的报红色的依赖(同时可以把本地maven库repo里对应的包删除),Import Changes,再取消注释,重新Import Changes。如果右下角没有Impo

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包