条件if-else语句在java

前端之家收集整理的这篇文章主要介绍了条件if-else语句在java前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Why does the ternary operator unexpectedly cast integers?2
我无法理解下面的代码如何打印50.0
public class Pre
{
    public static void main(String[] args)
    {
        int x=10;
        System.out.println((x > 10) ? 50.0 : 50); //output 50.0
    }
}

它应该打印50(我猜)不是50.0

上面的代码是不是等于下面的代码

public class Pre
{
    public static void main(String[] args)
    {
        int x=10;
        if(x>10)
            System.out.println(50.0);
        else
            System.out.println(50);//output
    }
}

如果他们是等价的,那么为什么产出差异?

解决方法

Java确保您的类型是一致的,所以在第一个语句中
(x > 10) ? 50.0 : 50

你有一个双重的,所以表达式的返回类型是double,并且litteral int被转换为double.所以有条件的双方是一样的!

如果你改变它

System.out.println((x > 10) ? 50.0 : 49);

它打印49.0.

if / else不是表达式,因此它不必进行任何转换.

原文链接:https://www.f2er.com/java/122307.html

猜你在找的Java相关文章