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

推荐订阅源

人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
V
V2EX
博客园 - 【当耐特】
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
B
Blog
V
Visual Studio Blog
D
DataBreaches.Net
C
Check Point Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs

博客园 - 有容乃大

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),这样就不会发生拆箱,也就不会发生空指针引用。

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