正常条件运算和三元运算之间的结果不同

时间:2019-01-14 06:11:14

标签: java if-statement conditional ternary-operator

直到现在我才知道Java提供了可以代替常规条件操作的三元运算符。

// normal conditional
result;
if(testCondition){
   result = value1;
} else {
   result = value12;
}

//ternary operator
result = testCondition ? value1 : value2;

但是当我在控制台下运行代码时,即使逻辑相同,也会打印出不同的结果:

public static void main(String[] args) {
    // normal conditional
    Object o1;
    if (true) {
         o1 = new Integer(1);
    } else {
         o1 = new Double(2.0);
    }

    //ternary operator
    Object o2 = true ? new Integer(1) : new Double(2.0);

    System.out.println(o1);
    System.out.println(o2);
}

Output : 
1
1.0

结果令我惊讶,我一直以为正常的条件和三元相同。

为什么控制台和三元运行的进程不同?
为什么控制台显示不同的结果?

0 个答案:

没有答案