Java操作符拆箱之坑
来源:互联网 发布:php技术总监 招聘 编辑:程序博客网 时间:2024/06/05 15:35
Java有各种的操作符,Java也支持装箱拆箱操作,但当这两个看似不相关的东西遇到一起的时候,那将会是……一!个!大!坑!
我们先来看一段代码
public static void main(String[] args) { Map<String, Object> map = Maps.newHashMap(); AClass a = new AClass(); Integer test = map.get("a") == null ? a.getA() : 2; System.out.println(test);}这将会输出什么?第一反应是null吗?这是很正常的想法,前提是你不知道这里面包含了一个拆箱操作。
a.getA()这里编译器会进行一个拆箱操作,因此这里等价于a.getA().intValue();这里显而易见会抛出个空指针出来。
而且,这个问题不仅限于三目运算符,大于、等于等运算符都会有这个问题。
解决的方法可以将值进行装箱操作使运算符中的操作数类型一致:Integer.valueOf(2);
但是,需要注意,如果这里使用Long.valueOf(2);还是会抛出空指针,因为这样会使a.getA()类型提升类Long,还是会触发拆箱装箱操作,因此一方面想办法保证操作数的类型一致,另一方面,写代码的时候一定要各种小心。
参考文献:http://blog.csdn.net/nazir2513/article/details/50175891
阅读全文
0 0
- Java操作符拆箱之坑
- 日志操作之JAVA
- 日志操作之JAVA
- java之移位操作
- java之文件操作
- Java 之Word操作
- JAVA之文件操作
- Java之CAS操作
- JAVA之操作文件
- Java 之注册表操作
- JAVA之字符串操作
- Java之国际化操作
- java文件操作之文件操作
- java日志操作之Log4j
- java日志之完美操作
- java之instanceof 操作符
- java解惑之移位操作
- java日志操作之Log4j
- LightOJ 1259 偶数分解成质数有多少种情况
- 简单LinuxC程序关于实现从终端获取一条语句并统计各种字符数量(字符输入输出)
- ios编程初识(一)
- Integer自动拆装箱
- 洛谷 P1272 重建道路
- Java操作符拆箱之坑
- 随堂小记
- zookeeper leader和follower启动期交互过程
- Python3 学习之basedao.py的优化详解
- Python标准库之xml.etree.ElementTree
- 蓝桥杯 ALGO-58 算法训练 字串逆序
- 简单点,Html
- Dialog显示和消失流程分析
- equals和==的区别