惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
L
LangChain Blog
M
MIT News - Artificial intelligence
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Check Point Blog
P
Proofpoint News Feed
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
U
Unit 42
I
InfoQ
月光博客
月光博客
爱范儿
爱范儿
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
博客园 - Franky
D
Docker
B
Blog

博客园 - 有容乃大

GitHub相关 2022又要重新找工作开始新的历程 java之面向对象详解(转) java关于for循环的效率优化 JAVA线程池ThreadPoolExecutor的分析和使用(新手踩坑和推荐方案) JAVA常量池 Java String的intern()注意事项(分JDK1.6及JDK1.7) JAVA的类加载过程 使用RabbitMQ实现延迟任务 Java中static块、构造块、构造函数的执行顺序 Ansj中文分词 关于HashMap、HashSet和ArrayList集合对象容量初始值设置及扩容演示 将异常对象转为字符串 JVM的内存区域划分 深入理解Java String类(综合) 理解JAVA的IO 理解Java注解类型 JAVA中Integer的==和equals注意 JVM原理摘要
JAVA三元运算符空指针引用的坑
有容乃大 · 2020-08-20 · via 博客园 - 有容乃大

有以下代码:

Long x = null;
Long y = true ? x : 100L;
System.out.println(y);

很多人以为会输出:null,其实会报空指针异常

原因是编译后包装类型会拆箱: Long y = true ? x : 100L;  反编译后变为:Long y = true ? x.longValue() : 100.longValue();
x为空对象,调用.longValue()自然会引用空指针异常

正确的代码:

Long x = null;
Long y = true ? x : Long.valueOf(100);
System.out.println(y);

将基本类型100L 改为 包装类型Long.valueOf(100),这样就不会发生拆箱,也就不会发生空指针引用。

希望大家使用三目运算符 且 两边类型不一致时,一定要引起注意!!!