📅  最后修改于: 2020-03-24 11:00:26             🧑  作者: Mango
条件运算符? :使用一个表达式的布尔值来确定应评估另外两个表达式中的哪一个。
所以,我们期望:
Object o1 = true ? new Integer(4) : new Float(2.0));
与如下相同:
Object o2;
if (true)
o2 = new Integer(4);
else
o2 = new Float(2.0);
但是运行代码的结果给出了意外的结果。
// Java展示条件运算符应该被谨慎使用
import java.io.*;
class GFG
{
public static void main (String[] args)
{
// 表达式 1 (using ?: )
// 在条件表达式中自动增加值
Object o1 = true ? new Integer(4) : new Float(2.0);
System.out.println(o1);
// 表达式 2 (Using if-else)
// 在if-else中没有增加值
Object o2;
if (true)
o2 = new Integer(4);
else
o2 = new Float(2.0);
System.out.println(o2);
}
}
输出:
4.0
4
如果有两个不同的类型作为第二个和第三个操作数,则条件运算符将实现数字类型提升。因此,根据给定的规则,如果一个操作数的类型为double,则另一个转换为double,因此4变为4.0。
而if / else结构,不执行数字类型提升,因此表现如预期。