现在的位置: 首页 > 综合 > 正文

三目条件运算符与 if…else

2013年12月09日 ⁄ 综合 ⁄ 共 588字 ⁄ 字号 评论关闭

三目条件运算符与 if...else 结构性质并不是完全相同的,绝对不是对if else的封装。从效率上来看,一般是if else比较高,因为三目运算的话,可能还会涉及到数据类型转换的问题。

 

下面是 Java Language Specification 上关于条件表达式的说明

 

如果第二和第三个操作数在可以转换为数值类型时,会有以下几种情况:

操作数其中一个是 byte 或 Byte 类型,而另一个是 short 或 Short 类型,那么这个表达式就是 short 类型

操作数中的一个是类型 T (T 可以是 byte、short 或者是 char 类型),而另一个是 int 类型的常数,其可以用 T 类型来表示时,那么这个表达式就是 T 类型

操作数中的一个是 Byte 类型,而另一个是 int 类型的常数,其可以用 byte 类型来表示,那么这个表达式就是 byte 类型

操作数中的一个是 Short 类型,而另一个是 int 类型的常数,其可以用 short 类型来表示,那么这个表达式就是 short 类型

操作数中的一个是 Character 类型,而另一个是 int 类型的常数,其可以用 char 类型来表示,那么这个表达式就是 char 类型

否则,双目数值提升(binary numeric promotion)会被用于操作数的类型中,条件表达式的类型是第二个和第三个操作数提升后的类型。注意:双目数值提升时进行拆箱转换和值集转换(value set conversion)

抱歉!评论已关闭.