三元运算符细节
三元运算符后面两个表达式一定要是变量能接受的类型。
三元运算符可以转成if else,反过来有时也可以。
注意,这只是可以转成,不代表等于,比如
public class test{ public static void main(String[] args){ int x = 1; float y = 2; int z = (int)(x > y ? x : y); System.out.println(z); } }
最后输出结果是2,如果把(x > y ? x : y)完全当成if else语句,那么int z = (int)(x > y ? x : y);从语法上看将是错误的。
所以这个转成,指的是他们之间有一个相同的逻辑:判断条件,然后执行相应的操作,只是这个逻辑相同,实际的赋值操作步骤是可能有出入的。
三元运算符是一个整体,所以如果三元运算符里包含了不同的数据类型,输出的结果可能会受影响,比如下面
Object obj = true?new Integer(1) : new Double(2); System.out.println(obj); 运行结果 1.0
可以看到,虽然obj是指向了Integer类的数据,可是由于三元运算符是一个整体,所以Double会导致数据精度都会提高