Java中三目运算符不为人知的坑

article/2025/8/19 16:04:14

一、思考题

以下代码可能有什么错误?为什么?

import java.util.HashMap;
import java.util.Map;public class OneMoreStudy {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("heihaozi", 1);Integer i = map != null ? map.get("a") : Integer.MAX_VALUE;System.out.println(i);}
}

可能有小伙伴认为没什么问题,请再思考5秒钟…

.
.
.

.
.
.

二、什么错误?

首先回答第一个问题,可能有什么错误,实践出真知,我们直接运行一下就知道了。

JDK7,报出了空指针异常,截图如下:

JDK8,没有报异常,截图如下:

综上所述,在JDK7中,以上代码会有空指针异常。

三、什么原因?

那么为什么会有空指针异常呢?让我们反编译一下。

JDK7编译后反编译的代码:

可以看出,在JDK7中的三目运算时,其中的对象会被拆箱为基本类型进行操作。
在对象进行拆箱操作时,由于该对象为null,在拆箱过程中调用null.intValue()时就报了空指针异常。

JDK8编译后反编译的代码:

可以看出,在JDK8中的三目运算时,其中的基本类型会被装箱为对象进行操作,所以没有报异常。

四、解决方案

还在使用JDK7的小伙伴注意了,为了避免空指针异常,三目运算符中要把基础类型进行装箱,譬如这样:

public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("heihaozi", 1);Integer i = map != null ? map.get("a") : Integer.valueOf(Integer.MAX_VALUE);System.out.println(i);
}

http://chatgpt.dhexx.cn/article/PHVq4aek.shtml

相关文章

JavaScript:三目运算符

HELLO 大家好&#xff01; 三目运算符是一个非常简单且使用的运算符。 是由两个运算符连接的三个操作数据或者表达式 条件表达式?表达式1:表达式0 当条件表达式为true则选择表达式1,反之false则选择表达式0 举个栗子 var age15; console.log(age<18?未成年:成年);结果为…

什么是三目运算符?三目运算符怎么使用?

1. 什么是三目运算符? 三目运算符又称为“三元运算符”和“条件运算符”&#xff0c;在java、C、C、python、JavaScript、PHP等编程语言中都有三目运算符。三目运算符的作用就是判断&#xff0c;可以理解为if条件判断的简化版。 2. 三目运算符的运算规则 三目运算符语法 布…

Java中的三目运算符

Java中的三目运算符 Java中的三目运算符关于三目运算符的面试题注意事项 Java中的三目运算符 1、三目运算符&#xff1a;又称之为三元运算符 2、格式&#xff1a;(关系表达式)?表达式1:表达式2; 3、如果关系表达式的结果为true&#xff0c;运算后的结果是表达式1&#xff1…

广义线性模型——Logistic回归模型(1)

广义线性模型&#xff08;GLM&#xff09;是线性模型的扩展&#xff0c;它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。 广义线性模型拟合的形式为&#xff1a; 其中g(μY)是条件均值的函数&#xff08;称为连接函数&#xff09;。另外&#xff0c;你…

机器学习-线性模型及广义线性模型

线性模型&#xff08;linear model&#xff09; 线性模型试图学得一个通过属性的线性组合来进行预测的函数&#xff0c;即&#xff1a; ... (其中;...;为输入属性&#xff0c;;...;和b为模型参数) 向量表示为&#xff1a; (其中为输入属性向量&#xff0c;和b为模型参数) 线性…

广义线性模型到底是个什么鬼?

以下文章内容摘自网络&#xff1a;说人话的统计学 原标题&#xff1a;广义线性模型到底是个什么鬼&#xff1f; ❉说人话的统计学❉ 从逻辑回归模型开始&#xff0c;我们连续讲了好多集有些相似又特点各异的几种统计模型。它们有个统一的旗号&#xff0c;叫做「广义线性模型」(…

线性模型(一)--广义线性模型(GLM)简介

我们从初中开始接触线性方程&#xff0c;线性关系是变量间最简单的关系&#xff0c;所以我打算从线性模型入手开始介绍机器学习的基本算法。广义线性模型&#xff08;General Linear Model,GLM&#xff09;是线性回归模型的推广形式&#xff0c;由广义线性模型可以推导出线性回…

广义线性模型2

1.1.2 Ridge Regression[岭回归] 岭回归和普通最小二乘法回归的一个重要区别是前者对系数模的平方进行了限制。如下所示&#xff1a; In [1]: from sklearn import linear_modelIn [2]: clf linear_model.R linear_model.RandomizedLasso linear_model.RandomizedLogisticRe…

R语言广义线性模型

&#xff11;.广义线性模型和glm&#xff08;&#xff09;函数 广义线性模型扩展了线性模型的框架&#xff0c;它包含了非正态因变量的分析。 广义线性模型通过拟合响应变量的条件均值的一个函数&#xff08;不是响应变量的条件均值&#xff09;&#xff0c;假设响应变量服从指…

广义线性模型(GLM)初级教程

文章目录 广义线性模型指数分布族性质 连接函数正则连接函数(canonical link function)如何找这样的g&#xff1f; 模型详解参数估计极大似然估计Newton-Raphson MethodFisher Scoring MethodIteratively Reweighted Least Squares关于FS和IRLS区间估计 模型检验Pearson Residu…

广义线性模型(Generalized Linear Model)之二:Logistic回归

广义线性模型&#xff08;Generalized Linear Model&#xff09;之二&#xff1a;Logistic回归 一、引入&#xff1a;多元线性回归模型二、Logistic回归模型三、非条件logistic回归模型&#xff08;一&#xff09;介绍&#xff08;二&#xff09;模型的建立与检验&#xff08;三…

广义线性模型(GLM)及其应用

广义线性模型[generalize linear model(GLM)]是线性模型的扩展&#xff0c;通过联系函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。它的特点是不强行改变数据的自然度量&#xff0c;数据可以具有非线性和非恒定方差结构。是线性模型在研究响应值的非正态分布以…

广义线性回归模型

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、广义线性回归模型二、数据集简介三、使用步骤1.引入库和读入数据2.简单分析3.详细分析3.回归分析4.计算混淆矩阵和整体预测率 前言 提示&#xff1a;glm被…

广义线性模型GLM

本文转自 GLM(广义线性模型) 与 LR(逻辑回归) 详解&#xff08;原作者&#xff1a;爱学习的段哥哥&#xff09; GLM的内容&#xff0c;本应该较早之前就总结的&#xff0c;但一直觉得这种教科书上的基础知识不值得专门花时间copy到博客里来。直到某一天看到一篇不错的总结&…

广义线性模型--Generalized Linear Models

监督学习问题&#xff1a; 1、线性回归模型&#xff1a; 适用于自变量X和因变量Y为线性关系 2、广义线性模型&#xff1a; 对于输入空间一个区域改变会影响所有其他区域的问题&#xff0c;解决为&#xff1a;把输入空间划分成若干个区域&#xff0c;然后对每个区域用不同的多项…

广义线性模型(Generalized Linear Models, GLM)

上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系&#xff0c;到底是什么关系呢&#xff1f;我们就来探讨一下吧。&#xff08;这一篇数学推导占了大多数&#xff0c;可能看起来会略有枯燥&#xff0c;但这本身就是一个把之前算法统一起来的抽象模型&#xf…

广义线性模型(Generalized Linear Model)——机器学习

零、前言 对于条件分布(y|x;θ)&#xff0c;对于线性回归模型有&#xff0c;而对分类问题有。其实这些分布均是广义线性模型&#xff08;GLM&#xff09;的特殊情况。 我们通过定义广义线性模型&#xff0c;可以据此求出拟合函数h(x) 一、指数分布族&#xff08;Exponential …

广义线性模型和线性回归

广义线性模型&#xff08;GLM&#xff09; 首先术语广义线性模型&#xff08;GLM&#xff09;通常是指给定连续和/或分类预测变量的连续响应变量的常规线性回归模型。它包括多元线性回归&#xff0c;以及ANOVA和ANCOVA&#xff08;仅具有固定效果&#xff09;。形式为 yi〜N&a…

机器学习之广义线性模型

深夜博客在今天开张啦 一年前接触了机器学习&#xff0c;纯属个人兴趣&#xff0c;还没想到要入坑&#xff0c;现在沉迷无法自拔了哈哈哈。好了也不说太多废话了&#xff0c;今天的主题是广义线性模型啦&#xff01;这篇博客是参考斯坦福cs229 lecture1中的Generalize Linear …