三元表达式空指针问题

news2024/11/17 3:50:41

三元表达式空指针问题

问题描述:

如下代码标红处出现空指针异常:

测试及定位问题:

情景一:将num赋值为20,将flag赋值为true

正常输出10

情景二:将num赋值为null,将flag赋值为true

此时可以看到编译器给出的警告提示,num处会发生拆箱操作,但是结果依然运行正常,因为三元表达式在条件为true短路则不会执行到num处。

情景三:将num赋值为null,将flag赋值为false

此时可以看到编译器给出的警告提示,num处会发生拆箱操作,执行程序发生空指针异常,因为三元表达式在条件为false时执行到num处进行拆箱操作,也就是Integer的intValue()方法。

情景四:将num赋值为null,将flag赋值为true,num和10调换位置 

此时可以看到编译器给出的警告提示,num处会发生拆箱操作,执行程序发生空指针异常,因为三元表达式在条件为true时执行到num处进行拆箱操作,也就是Integer的intValue()方法。 

情景五:将flag赋值为true

正常输出null

总结

综上来看,三元表达式中条件判断后,如果两个结果中不直接写null且同时存在基本类型和包装类型的情况下,会发生自动装箱或自动拆箱操作,比如情景三和情景四,因此出现这种代码最好使用包装类。

Java规范

Java规范连接

修正问题:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

域渗透——vCenter安装及使用

简介 VMware vCenterServer 提供了一个可伸缩、可扩展的平台,为 虚拟化管理奠定了基础。VMware vCenter Server(以前称为 VMware VirtualCenter),可集中管理 VMware vSphere 环境,与其他管理平台相比,极大…

C妈妈直播监控大屏页面--formDataSign参数逆向分析

内容仅供参考学习 欢迎朋友们V一起交流: zcxl7_7 详情请看专栏中的文章

【单片机】STM32单片机读取旋转编码器,TIM定时器编码器模式捕获,程序

文章目录 旋转编码器介绍主程序逻辑直接检测用外部中断检测下降沿定时器直接解码旋转编码器STM32中文参考手册V10.pdf定时器的编码器模式TIM2定时器编码器程序TIM3定时器编码器程序TIM4定时器编码器程序 旋转编码器介绍 旋转编码器简单来说,就是会输出2个PWM&#…

d2l_第八章学习_现代卷积神经网络

参考: d2l x.1 AlexNet 研究人员认为: 更大更干净的数据集或是稍加改进的特征提取方法,比任何学习算法带来的进步大得多。认为特征本身应该被学习,即卷积核参数应该是可学习的。创新点在于GPU与更深的网络,使用ReLU…

问题收藏夹——使用mybatisPlusJoin报 NoSuchPropertyException错误

出现问题代码: 报错: 解决方法: MPJLambdaQueryWrapper 类有问题,应该用MPJLambdaWrapper,去看了作者官网,发现已经没有这个类的用法了,但是还能用这个类(Copilot直接给我补全这个…

SNMP 计算机网络管理 实验2(三) SNMP服务与常用网管命令之任务五:查看端口流量及实验小结

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &am…

人工智能 --- 吉布斯采样

贝叶斯网络如下图所示,包含 4 个随机变量,每个变量都只有表示是否的两个值。请用吉布斯采样方法回答以下问题。 假设观察到 𝑅 𝑟, 初始化样本中其他变量的赋值为 𝐶 𝑐, 𝑆 −&#x1d460…

四、深度学习的计算

文章目录 前言一、层和块1.1 自定义块1.2 顺序块1.3 在前向传播函数中执行代码1.4 效率问题1.5 小结 二、参数管理2.1 参数访问2.1.1 目标参数2.1.2 访问所有参数2.1.3 从嵌套块中收集参数 2.2 参数初始化2.2.1 内置初始化2.2.2 自定义初始化2.2.3 参数绑定 三、延后初始化四、…

低功耗蓝牙OM6621EM 兼容Nordic 51系列2.4G私有协议

OM6621EM是一个功率优化的系统(SOC).解决蓝牙低功耗和专有的2.4 ghz应用。它集成了一个高具有蓝牙基带和丰富外设的低功耗射频收发器I0扩展。OM6621EM还集成了电源管理单元(PMU)来提供高效的电源管理。它的目标是2.4GHz低功耗蓝牙系统,专有的2.4 ghz系统&#xff0c…

easyX库其他函数(注释版)

本篇是easyX库系列正文最后一篇,依旧是有几个很有价值的函数,我不补充了几个例子,对easyX库中的部分code例子做了修改。 0.其它函数概览 函数或数据类型描述GetEasyXVer获取当前EasyX库的版本信息。BeginBatchDraw开始批量绘图。EndBatchDr…

Java Web HTMLCSS(1)23.6.29

HTML&CSS 1,HTML 1.1 介绍 HTML 是一门语言,所有的网页都是用HTML 这门语言编写出来的,也就是HTML是用来写网页的,像京东,12306等网站有很多网页。 这些都是网页展示出来的效果。而HTML也有专业的解释 HTML(Hy…

Pycharm中打开HTML文件报错:Windows 找不到文件‘chrome‘

问题现象: Pycharm中,打开HTML文件,选择chrome浏览器打开时,报错:Windows 找不到文件’chrome’。请确定文件名是否正确后,再试一次。但实际上你的电脑上是安装了Chrome浏览器的。 解决方案: 原…

【算法】状态机DP 买卖股票系列

文章目录 前期知识股票问题买卖股票的最佳时机 II最佳买卖股票时机含冷冻期买卖股票的最佳时机 IV补充:恰好k次 / 至少k次 怎么做? 相关题目练习买卖股票的最佳时机 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/解法1——状态机DP解法…

十三、禅道登录/提交版本/编辑版本接口

十三、禅道提交版本/编辑版本接口 1. 禅道的登录接口或者叫获取tokens接口 # -*- coding: utf-8 -*- """ ------------------------------------------------------------------------------- File : zentao_login.py Time : 2023/6/29 13:55 author : …

Java读取Excel第一行数据,获取表头

目录 一、场景 二、代码实现 1、工具类 2、方法调用 3、结果 之前写过一篇关于解析Excel的博客:解析读取Excel文件(.xls .xlsx),今天再分享一下,如何获取Excel的表头数据。 一、场景 需要判断导入的Excel文件的列…

什么是AQS

AQS(Abstract Queued Synchronizer)是一个抽象的队列同步器,通过维护一个共享资源状态(Volatile Int State)和一个先进先出(FIFO)的线程等待队列来实现一个多线程访问共享资源的同步框架。 AQS…

今日份分享:三个电脑mp3转换器推荐

有一个音乐爱好者叫小艾。她对音乐充满热爱,每天都会用耳机沉浸在动听的旋律中。然而,她最近遇到了一个问题:她手头有一些喜欢的音乐文件,但格式却是不支持她的音乐播放器。这让她感到非常困扰,因为她希望随时随地欣赏…

适用于Vue 3的最佳开源分页库

从头开始实现分页可能是一项耗时的任务,需要大量的精力和资源。幸运的是,有几个伟大的开源库可以简化这个过程,提高你的效率。使用分页库可以节省你的时间和精力,使你能够专注于建立你的应用程序的其他更重要的功能。 在这篇文章…

如何选择适合自己的专业?

高考季又到了,毕业生们正忙着选填志愿。志愿填报是一个关键的决策,它将对他们未来的学习和就业产生重要影响。在这个关键的时刻,一些相关问题随之而来:如何填报志愿?是选择专业还是学校?哪些专业就业前景好…

全国农信银CTF逆向Baby8or解析

按CTRL X 跳转到main函数,按F5 生成伪代码进行分析。 发现一个加密函数,当加密后的数据和genc[i]数组中的值对比一致则表示正确flag,字符串长度为35。 双击genc[i] 找到genc[i]中的数据,转成10进制得到数组 genc[172,102,148,22…