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?
蒂亚!!
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?
蒂亚!!
(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
.
阅读更多。
好吧,您有三元运算符?:
:(x>5) ? 2.3 : 2
该运算符只有一种返回类型-必须匹配两种情况->因此返回类型float
为2.3
在Java 语言规范 15.25中,您可以看到它发生的原因。三元运算符有一个类型。在这种具体情况下,第二个和第三个操作数具有可转换为数字类型的类型,因此应用了二进制数字提升。