if-else和条件运算符

时间:2017-05-22 08:19:16

标签: java if-statement conditional-operator

我遇到了以下代码段,需要帮助来了解幕后发生的事情。

    Object o1,o2;

    o1 = true?new Integer(2):new Double(3);
    if(true){
        o2 = new Integer(2);
    }else{
        o2 = new Double(3);
    }

    System.out.println(o1 + "\t" + o1.getClass().getName());
    System.out.println(o2 + "\t" + o2.getClass().getName());

上面的代码似乎很容易猜到准确的结果,但是当我运行它时,我得到以下输出。

2.0     java.lang.Double
2       java.lang.Integer

看起来JVM在某种情况下将输出(Integer)类型化为第一种情况下的Double而不是第二种情况。

我想知道背后的原因,因为我一直认为 conditional-operator if-else statements 是等效的。< / p>

0 个答案:

没有答案
相关问题