Java注意事项之三元操作符
来源:互联网 发布:如何优化亚马逊关键词 编辑:程序博客网 时间:2024/05/15 08:48
Java注意事项之三元操作符
Java中三元操作符(condition ? expression1 : expression2)的值类型是由expression1的类型决定的。这个规则导致三元操作符和基本类型的拆装箱结合使用时,需要特别注意,例如:
Integer nullInteger() { return null;}Integer random0Null() { Random random = new Random(); return random.nextBoolean() ? 0 : nullInteger();}
random0Null这个随机返回Integer类型的0或者null的程序就有可能会抛NullPointerException,这是因为:
- random0Null的return语句是三元操作符,它的类型是由0决定的
- 0是int类型的,所以整个return语句是int类型的
- 当nextBoolean()为false时,调用nullInteger()获得null
- null需要调用intValue()拆箱转为int,这是非法操作,抛异常
random0Null实际执行过程是这样的:
Integer random0Null() { Random random = new Random(); Integer returnValue = null; if (random.nextBoolean()) { returnValue = Integer.valueOf(0); } else { returnValue = Integer.valueOf(nullInteger().intValue()); } return returnValue;}
注意以下代码不会抛异常:
Integer random0Null() { Random random = new Random(); // 第二个参数是null常量,编译器会根据0和null判断出类型为Integer return random.nextBoolean() ? 0 : null;}Integer random0Null() { Random random = new Random(); // 表达式类型为nullInteger()返回值类型,是Integer return !random.nextBoolean() ? nullInteger() : 0;}
1 0
- Java注意事项之三元操作符
- java三元运算符注意事项
- java三元操作符注意
- Java探究心得之三元运算符
- 三元操作符
- 三元操作符
- python三元操作符
- 三元操作符陷阱
- python 三元操作符
- js 三元操作符
- 三元操作符
- javascript 三元操作符
- java 条件表达式(即三元操作符)的陷阱
- Java三元运算符
- java 三元运算符
- Java三元运算符
- JAVA 三元运算符
- Java操作数据库类Statement之注意事项!...
- 如何识别高级的验证码
- 2016第一场多校赛
- NYOJ-Color the fence
- iOS UITableView添加长按事件 —— HERO博客
- 通过sql获得mysql的表结构
- Java注意事项之三元操作符
- 【杭电oj】1254 - 推箱子(dfs+bfs+优先队列)
- 修改开源库Wheel后,能控制选中颜色及大小
- 软件架构和设计
- ListView
- 我的第一个requirejs例子,简单的demo
- C语言-结构-笔记
- Cake<hdoj1722>
- Java WMI