java三目运算符 效率_Java中if...else和三目运算符的性能比较

Java中if…else和三目运算符的性能比较:

什么是三元运算符呢!无疑其操作元有三个。第一个是表达式,剩余两个是值,条件表达式为真时,取第一个值,为假时,取第二个值。

示例代码如下:

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.如果直接进行数值的比较,则自动转型为范围大(精度高)的类型。

A.从类型转换上看

因为三目运算符在做判断的时候需要考虑到类型转换的问题,同时在一定的情况下显得不是那么灵活。而if else 不需要考虑类型转换,也相对于三目运算符较为简单灵活。

所以 if else 效率高一点。

B.从总体上看

A:需要考虑到循环自身所占用的时间。

B:需要考虑到赋值以及循环内的其他运算符所占用的时间。

所以 三目运算符效率高一点.


版权声明:本文为weixin_34539480原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。