java.lang.NullPointerException出现的几种原因及解决方案

 更新时间:2020年05月12日 14:29:16   作者:宜春  
这篇文章主要介绍了java.lang.NullPointerException出现的几种原因及解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

java.lang.NullPointerException出现的几种原因:

1、字符串变量未初始化
2、接口类型的对象没有用具体的类初始化,比如:

Map map // 会报错
Map map = new Map(); //则不会报错了

3、当一个对象的值为空时,你没有判断为空的情况。
4、字符串与文字的比较,文字可以是一个字符串或Enum的元素,如下会出现异常

String str = null;
if(str.equals(“Test”)){
//这里的代码将不会被触发,因为会抛出java.lang.NullPointerException异常。
}

5、优先使用String.valueOf()方法代替toString()
当程序代码需要对象的字符串表示形式时,请避免使用该对象的toString方法。如果你的对象的引用等于null,NullPointerException则会抛出,使用静态String.valueOf方法,该方法不会抛出任何异常并打印"null"
6、class被声明了类型, 默认 class = null; 这样在调用class中方法的时候系统只能给你个空指针异常, 给其实例化就好了:class = new Class();
7、返回null,方法的返回值不要定义成为一般的类型,而是用数组。这样如果想要返回null的时候就能避免许多不必要的NullPointerException

在这里插入图片描述

总之,NullPointerException由RuntimeException派生出来,是一个运行时异常。其意指可能会在运行的时候才会被抛出,一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以声明变量时最好给它分配好内存空间,给予赋值,例如拿该变量与一个值比较时,要么先做好该异常的处理要么给它进行判断先: if (str !=null && str “”){ …}
判断一个String的实例s是否等于“a”时,不要写成s.equals(“a”),这样容易抛NullPointerException,而写成"a".equals(s)就可以避免这个问题,不过对变量先进行判空后再进行操作更好,尽量避免返回null,方法的返回值不要定义成为一般的类型,用数组。这样如果想要返回null的时候,就返回一个没有元素的数组。就能避免许多不必要的NullPointerException

下图为异常分布图:

在这里插入图片描述

总结

到此这篇关于java.lang.NullPointerException出现的几种原因及解决方案的文章就介绍到这了,更多相关java.lang.NullPointerException内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot监听事件和处理事件程序示例详解

    SpringBoot监听事件和处理事件程序示例详解

    这篇文章主要介绍了SpringBoot监听事件和处理事件程序示例,监听和处理事件是一种常用的模式,用于在应用程序的不同部分之间传递信息,Spring 的事件发布/订阅模型允许我们创建自定义事件,并在这些事件发生时由注册的监听器进行处理,需要的朋友可以参考下
    2022-06-06
  • groovy脚本定义结构表一键生成POJO类

    groovy脚本定义结构表一键生成POJO类

    这篇文章主要为大家介绍了groovy脚本定义结构表一键生成POJO类示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Spring基于注解配置AOP详解

    Spring基于注解配置AOP详解

    这篇文章主要介绍了Spring基于注解配置AOP详解,Spring 的 AOP 功能是基于 AspectJ 实现的,支持使用注解声明式定义 AOP 切面,Spring 基于注解配置 AOP 需要启用 AspectJ 自动代理功能,需要的朋友可以参考下
    2023-09-09
  • Swing中依据鼠标拖拽来画出矩形的实现方法

    Swing中依据鼠标拖拽来画出矩形的实现方法

    这篇文章主要介绍了Swing中依据鼠标拖拽来画出矩形的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Java中类的加载器及其加载过程

    Java中类的加载器及其加载过程

    字节码文件在类加载器子系统中要进行加载、链接、初始化等处理,我们这里详细来谈其中过程,本文主要介绍了Java中类的加载器及其加载过程,感兴趣的同学可以参考一下
    2023-04-04
  • Eclipse代码格式化设置简单介绍

    Eclipse代码格式化设置简单介绍

    这篇文章主要介绍了Eclipse代码格式化设置简单介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • 使用Spring注解@EventListener实现监听原理

    使用Spring注解@EventListener实现监听原理

    这篇文章主要介绍了使用Spring注解@EventListener实现监听原理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java 阻塞队列和线程池原理分析

    Java 阻塞队列和线程池原理分析

    这篇文章主要介绍了Java 阻塞队列和线程池原理分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 利用SpringBoot和LiteFlow解锁复杂流程

    利用SpringBoot和LiteFlow解锁复杂流程

    随着业务的复杂化,企业需要更加高效、便捷地管理自己的业务流程,这就需要借助一些流程引擎实现,今天,我们就来介绍一种基于Java语言开发的轻量级工作流引擎——LiteFlow,以及如何在Spring Boot框架中集成它,从而提高企业的工作效率和开发效率
    2023-06-06
  • java定义二维数组的几种写法(小结)

    java定义二维数组的几种写法(小结)

    下面小编就为大家带来一篇java定义二维数组的几种写法(小结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10

最新评论