三目运算符下的空指针异常和自动拆装箱
来源:互联网 发布:三菱plc编程手册 微盘 编辑:程序博客网 时间:2024/06/05 20:44
这是一段会报空指针异常的代码:
Double a=Double.valueOf(1);Float b=null;String c="123";a=c.equals("123")?b:a;在这个例子里变量b并不能成功的把null赋值给变量a,而是抛出了空指针异常
虽然b是Float类型,a是Double类型,但是三目运算符的编译并不会报错
虽然编译不报错,但是会有警告,说变量b是null但是还要拆箱
使用三目运算符时,如果出现类型不一致,java会使用自动拆装箱的机制
类型不一致时java会拆箱成基本类型,也就是把Double变成double,Float变成float,然后用valueOf方法进行处理
自动拆装箱是JDK1.5引入的,由编译器来支持,上面例子的class文件反编译出来的结果是这样的:
Double a = Double.valueOf(1.0D);Float b = null;String c = "123";a = Double.valueOf(c.equals("123") ?b.floatValue() : a.doubleValue());变量b拆箱成了b.floatValue(),这也就是空指针异常的来源
虽然有自动拆装箱,但是直接把Float对象赋值给Double对象,编译是不能通过的,就像这样:
Double d=Double.valueOf(1);Float e=d;//该行编译不通过
阅读全文
0 0
- 三目运算符下的空指针异常和自动拆装箱
- 三目运算符导致的空指针yichang
- Integer的缓存和自动拆装箱
- java的自动拆装箱
- C#的空接合运算符 三目运算符
- 三目运算符报空指针,JDK自动拆箱
- JdbcTemplate自动注入的时候出现空指针异常
- Integer的自动拆装箱的陷阱
- Integer的自动拆装箱的陷阱
- 基本数据的自动拆装箱
- Integer的自动拆装箱问题
- 一种隐式的java空指针异常--自动拆箱
- java 自动拆装箱
- java 自动拆装箱
- Java自动拆装箱
- 自动拆装箱
- 自动拆装箱
- JAVA自动拆装箱
- 正态分布/卡方分布/F分布/T分布/泊松分布
- 安卓APP开发优势和概述
- 留言点赞获赠书 | vSAN架构细节(5)
- 学生成绩统计
- grpc
- 三目运算符下的空指针异常和自动拆装箱
- Java-笔记4
- wordpress优化之nofollow标签的使用
- 百度前端面试经验
- Druid大数据实时处理的开源分布式系统——Coordinator
- 如何在Ubuntu 16.04上安装Python 3以及设置本地编程环境
- (十六)Java设计模式之模板方法模式
- Linux C/C++ 找不到deamon函数声明的解决方法
- uboot的修改uboot串口波特率的修改,uboot启动波特率和uboot启动lcd的添加