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.0TIA !!
答案 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。