查看屏幕截图:
那里发生了什么?我看到我们正在将23F强制转换为一个int,因此在选择“ II”时,我们最终完成23/7,这应该会给我们3 ...至少如此,我认为。但是为什么我们有3.0?我们为什么要加倍?
答案 0 :(得分:2)
这里是上下文:
float x = myFunc(23F);
int myFunc(float x) { ... }
表达式的右侧是int
,您已经正确推断出它的值是3
。
当您将int
值分配给float
变量时,整数将转换为float
。
这是原始加宽转换的示例。当您从“较小”原始数字类型转换为“较大”原始数字类型时,可能会在各种情况下发生。 int
类型比float
类型“小”。一般来说:
byte
<short
和char
<int
<long
<float
<double
。
我们为什么要加倍?
参见上文。但这是float
而不是double
。
当使用println
在Java中输出数字时,float
和double
看起来将相同。 println
方法不会输出后缀为float
的{{1}}。 F
和F
后缀仅在Java 源代码中使用。
答案 1 :(得分:-3)
因为将返回结果的函数分配给z,并且z的类型为float。