小编Pha*_* VU的帖子

条件运算符,奇怪的行为

public static void main(String[] args) {
    Object o1;
    if (true)
        o1 = new Integer(5);
    else
        o1 = new Double(2.0);

    Object o2 = true ? new Integer(5) : new Double(2.0);

    System.out.println(o1);
    System.out.println(o2);
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例代码中,通过使用条件运算符(?:),我可以在一行中重写上面的示例.所以,我认为o1和o2的结果必须相同.但是,奇怪的是,结果如下:

5
5.0
Run Code Online (Sandbox Code Playgroud)

你能帮我指点一下这个行为吗?

更新:结果与以下代码相同:

Object o2 = true ? (Object) new Integer(5) : new Double(2.0);
Run Code Online (Sandbox Code Playgroud)

java ternary-operator

12
推荐指数
1
解决办法
148
查看次数

标签 统计

java ×1

ternary-operator ×1