Java空指针异常:java.lang.NullPointException原因

2023-10-31

Java空指针异常在工作中经常看到,之前我不是很懂这个概念以为如果某个对象没初始化就会报错结果不是,我通过debug打断点发现了具体原因和解决方法。

原因:

  1. 在excel上传解析的时候发现,如果没有初始化对象,里面就是null的(没有分配空间),这个时候它是不会报空指针异常的。
  2. 如果对象是空的,然后这个时候你通过这个对象去调任何方法都会报空指针异常。
  3. 如果你调的方法入参是这个空对象,这个时候不会报空指针异常(具体得看方法内部逻辑)。

解决方法:

  1. 如果是空对象调方法入参为非空参数,例如
	String s = null;
	s.equals("test");

可以改成

	"test".equals(s);
  1. 可以用各种工具类来实现想要的功能,例如
	String s = null;
	StringUtils.isEmpty(s);

常见的空指针异常,判断该List长度是否为0且不为空:

    List<String> list = null;
    if (list.size() > 0 && list != null){
        list.add("test");
    }

结果会报空指针异常,应该先进行list本身的判断,再进行长度判断:

    List<String> list = null;
    //先判断对象是否为空,如果为空则为false,就不会进行后面的判断
    if (list != null && list.size() > 0){
        list.add("test");
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java空指针异常:java.lang.NullPointException原因 的相关文章

  • Java 中等效的并行扩展

    我在 Net 开发中使用并行扩展有一些经验 但我正在考虑在 Java 中做一些工作 这些工作将受益于易于使用的并行库 JVM 是否提供任何与并行扩展类似的工具 您应该熟悉java util concurrent http java sun
  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • FPGA原理与结构——FIFO IP核原理学习

    一 FIFO概述 1 FIFO的定义 FIFO是英文First In First Out的缩写 是一种先入先出的数据缓冲器 与一般的存储器的区别在于没有地址线 使用起来简单 缺点是只能顺序读写数据 其数据地址由内部读写指针自动加1完成 不能
  • No module named ‘tensorflow.examples.tutorials‘报错解决办法

    如图该情况报错 解决办法 1 照着图片上 打开anconda中的cmd prompt 输入如下代码 如下图 查看自己tensorflow安装路径 activate tensorflow python import tensorflow as
  • 375. 猜数字大小 II

    我们正在玩一个猜数游戏 游戏规则如下 我从 1 到 n 之间选择一个数字 你来猜我选了哪个数字 如果你猜到正确的数字 就会 赢得游戏 如果你猜错了 那么我会告诉你 我选的数字比你的 更大或者更小 并且你需要继续猜数 每当你猜了数字 x 并且
  • Android JNI编程 与 NDK开发(一) 简介,区别,使用场景

    JNI是什么 JNI 全称Java Native Interface 是java与其他语言 主要是c c 交互的接口 是java的一种特性一种协议 开发者可以通过JNI在java中调用c c 代码或在c c 中调用java代码 NDK是什么
  • checkbox与dataTable的完美结合

    本文介绍了richface的一种使用情况 datatable和checkbox的结合 rich dataTable是很不错的web控件 但如果编写如下图效果的业务 必须结合checkbox来使用 现附上代码 然后分析 Html代码
  • Xpath方法精准采集网页内容-完整版

    采集规则配置时 主要的问题是如何只采集网页上的有效内容 现在新一代的采集工具都会先智能自动配置好采集规则 效果与准确性就得看各家采集器的智能算法了 但如果有特殊的需求 要采集网页上特定区域的内容 智能算法配置的采集规则就得进行修改了 重新定
  • ArchiMate® 3.1 规范:新版标准

    2019年11月5日 面向Enterprise Architecture的最新版 ArchiMate 建模语言在阿姆斯特丹 The Open Group 会议上发布 版本 3 1 是对之前主要版本 3 0 2016 年发布 的更新 此次更新
  • Web前端——Javascript学习(API)

    1 API 应用程序编程接口 这是实现的 现成的对象和方法 提高开发效率 2 数组API 1 arr to String var str arr toString var str arr join 连接符 自定义连接符 固定套路 1 将字符
  • Python新手入门-操作篇

    原文来自于 https www jb51 net article 163306 htm pycharm是一款高效的python IDE工具 它非常强大 且可以跨平台 是新手首选工具 下面我给第一次使用这款软件的朋友做一个简单的使用教程 希望
  • redhat系统操作小解

    redhat操作系统常见操作问题 今天给大家讲一讲redhat系统常见的操作问题 不用命令就能知道的问题 很多大家都是知道的 但也给大家一一罗列出来 希望能够有帮助 也是对自己知识的一种巩固 首先 大家看到的是开机界面 一般无论是普通用户还
  • 收藏丨8个常用中文OCR数据集,附下载链接

    扫一扫识别文字 拍照翻译 拍照搜题 车牌自动识别 这些随处可见的功能 给我们的工作和生活带来了极大的便利 其背后都离不开OCR技术的支持 随着深度学习技术的发展 智能OCR算法与应用也越来越丰富 对相关数据的需求也增加 许多小伙伴反馈中文O
  • Entity Framework Core系列教程-20-影子属性(Shadow Property)

    Entity Framework Core的影子属性 Shadow Property Entity Framework Core引入了一种新的属性类型 称为 影子 属性 该属性在EF 6 x中不存在 阴影属性是未在 NET实体类中直接定义的
  • 一、VMware及win10虚拟机的安装及环境配置

    一 安装VMware 1 1 下载VMware安装包 在此给大家一个迅雷的链接 点击下载 提取码 sp84 1 2 点击下一步 1 3 点击我接受 点击下一步 1 4 更换安装位置 点击下一步 1 5 点击下一步 1 6 点击下一步 1 7
  • 系统分析和设计方法之使用UML进行面向对象设计和建模

    使用UML完成系统建模是一件不错的事 不过在权衡进度 成本之后 大体上会知道能不能做 并不是对系统好的事情我们都要完成 重点在于资源约束 此处只是在资源约束满足时 应该怎么处理UML设计的通用流程 在实际工作场景中要根据要求做取舍 这是一篇
  • Linux入门:tar、gzip、bzip2以及zip的区别

    Linux入门 tar gzip bzip2以及zip的区别 tar命令 gzip以及bzip2命令 zip命令 区别 正文处理命令 tar命令 1 归档 archiving 就是将许多文件 或目录 打包压缩成一个文件 2 tar命令 压缩
  • flex 实现水平布局 三等分

    box display flex flex direction row justify content space between align items center 对应的html 如下 div class box div 已售 div
  • python菜鸟学习Day10(SMTP发送邮件及带附件及错误及发送短信)

    我们通过http协议可以访问网站 同样 我们通过SMTP协议可以发送邮件 python中的smtplib模块对SMTP进行了简单封装 可以实现源地址向目标地址发送邮件 方法 含义 SMTP host port local hostname
  • Vue项目打包并发布的完整步骤记录

    如何将Vue项目打包并发布 我这边是测试发布到本地 不过步骤是一样的 步骤如下 1 安装部署Nginx服务器 说明 Nginx engine x 是一个高性能的HTTP和反向代理服务器 也是一个IMAP POP3 SMTP服务器 同时 也是
  • HttpRunnerManager部署

    基于HttpRunner的接口自动化测试平台 HttpRunner djcelery and Django HttpRunner手册 http cn httprunner org git地址 httprunner HttpRunnerMan
  • Java空指针异常:java.lang.NullPointException原因

    Java空指针异常在工作中经常看到 之前我不是很懂这个概念以为如果某个对象没初始化就会报错结果不是 我通过debug打断点发现了具体原因和解决方法 原因 在excel上传解析的时候发现 如果没有初始化对象 里面就是null的 没有分配空间