本文转自:https://blog.csdn.net/duyiwuerluozhixiang/article/details/78442195
什么是三元运算符呢!无疑其操作元有三个。第一个是表达式,剩余两个是值,条件表达式为真时,取第一个值,为假时,取第二个值。
示例代码如下:
boolean a = 20 < 45 ? true : false
三元运算符的优先级高于赋值运算符,故第一个表达式为真,取第一个值,返回 a=true;
三元运算符用于做判断,其等价的if-else语句如下:
boolean a;
if (20 < 45) {
a = true;
}else{
a = false;
}
很多时候三元运算符可以和if-else语句进行互换,它们两个可以等价的实现判断的效果,但是三元运算符和if-else还是有不同之处的,下面我们来具体谈谈不同之处:
第一
两者之间对于返回值有不同的要求。三元运算符是必须要有返回值的要求,其运算后一定有一个返回值返回给开发人员使用,而if-else不一定有返回值,其执行结果可能是赋值语句或者是输出语句。
第二
两者的性能不同。三元运算符的运算性能高于if-else。
第三
两者使用范围不同,在ireport的一些动态执行的情况下,只能用三元运算符而不能用if-else语句,当然在大多数情况下两者是可以等价互换的
第四
两者的语言特性不同,三元运算符设计到一种双目运算符提升的特性,
所谓双目数值提升,在双目运算符java的开发环境下可以简单的理解为类型转换的问题。
1.如果定义了数据类型的变量和未定义数据类型的变量参与双目运算符的后双目运算,那么返回的结果就是范围大(精度高)的类型。
2.如果两个定义了数据类型的变量参与双目运算符的后双目运算,那么返回的结果就是范围大(精度高)的类型。
3.如果直接进行数值的比较,则自动转型为范围大(精度高)的类型。