1
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?

蒂亚!!

4

3 回答 3

2

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

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

由于2.3是双精度,2因此被转换为双精度。

例如,如果您更改为:

(x>5)?1:2

然后输出将是2. 因为两者都是整数,不需要进行强制转换。

用它编写它if看起来像这样:

if(x > 5) 
   return 2.3
else
   return 2

如果包含此代码的方法的返回类型是,int您将收到错误消息。

但如果它是双倍的,那么你就可以了,因为2将被强制转换为2.0.

阅读更多

于 2013-04-11T07:39:22.617 回答
0

好吧,您有三元运算符?:(x>5) ? 2.3 : 2 该运算符只有一种返回类型-必须匹配两种情况->因此返回类型float2.3

于 2013-04-11T07:39:51.290 回答
0

Java 语言规范 15.25中,您可以看到它发生的原因。三元运算符有一个类型。在这种具体情况下,第二个和第三个操作数具有可转换为数字类型的类型,因此应用了二进制数字提升

于 2013-04-11T07:43:47.303 回答