三元运算符细节

三元运算符后面两个表达式一定要是变量能接受的类型。

 

三元运算符可以转成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会导致数据精度都会提高

posted @ 2022-02-08 10:52  codemelo  阅读(138)  评论(0)    收藏  举报