为什么输出在SOPLN中转换为浮点数?

时间:2013-04-11 07:36:45

标签: java type-conversion core

int x = 5;
System.out.println((x>5)?2.3:2); // OP-> 2.0
System.out.println((x==5)?10:20);// OP-> 10

为什么在第一种情况下,OP从2?

转换为2.0

TIA !!

3 个答案:

答案 0 :(得分:2)

(x>5)?2.3:2,因为您要返回 2.3 2

它们应该来自同一类型。 (因为返回类型应该是相同的

由于2.3为双倍,2会转换为双倍。

如果您更改为:

(x>5)?1:2

然后输出为2。由于两者都是整数,因此不需要进行演员表。

if编写它将如下所示:

if(x > 5) 
   return 2.3
else
   return 2

如果包含此代码的方法的返回类型为int,则会出错。

但如果它是双倍的,那么你就可以了,因为2将被投射到2.0

了解更多this

答案 1 :(得分:0)

嗯,你有三元运算符?:(x>5) ? 2.3 : 2 此运算符只有一种返回类型 - 必须匹配两种情况 - >因此返回float

2.3类型

答案 2 :(得分:0)

Java Language Specification 15.25中你可以看到它为什么会发生。三元运算符有一种类型。在这个具体的例子中,第二个和第三个操作数具有可转换为数字类型的类型,因此应用了binary numeric promotion