Java 为什么输出在SOPLN中转换为浮点?
为什么在第一种情况下,OP从2转换为2.0 蒂娅Java 为什么输出在SOPLN中转换为浮点?,java,type-conversion,core,Java,Type Conversion,Core,为什么在第一种情况下,OP从2转换为2.0 蒂娅 (x>5)?2.3:2,因为您正在返回2.3或2 它们应该是同一类型的。(因为返回类型应该相同) 由于2.3是双精度的,2被转换为双精度的 例如,如果您更改为: (x>5)?1:2 然后输出将为2。因为两者都是整数,不需要进行强制转换 如果使用if编写,将如下所示: int x = 5; System.out.println((x>5)?2.3:2); // OP-> 2.0 System.out.println((x==5)?10:
(x>5)?2.3:2
,因为您正在返回2.3或2
它们应该是同一类型的。(因为返回类型应该相同)
由于2.3
是双精度的,2
被转换为双精度的
例如,如果您更改为:
(x>5)?1:2
然后输出将为2
。因为两者都是整数,不需要进行强制转换
如果使用if
编写,将如下所示:
int x = 5;
System.out.println((x>5)?2.3:2); // OP-> 2.0
System.out.println((x==5)?10:20);// OP-> 10
如果包含此代码的方法的返回类型为int
,则会出现错误
但是如果它是双精度的,那么您就可以了,因为2
将被转换为2.0
阅读更多信息。好吧,您有三元运算符
?:
:(x>5)?2.3:2
此运算符只有一个返回类型-必须与这两种情况匹配->因此,对于中的2.3
返回类型float
,您可以看到它发生的原因。三元运算符有一个类型。在这种具体的情况下,第二个和第三个操作数的类型可以转换为数值类型,因此应用
if(x > 5)
return 2.3
else
return 2