在 Kathy Sierra 的 SCJP 指南一书中,在作业章节中,我们了解到我们可以声明这样的内容byte b = 7;
。幕后代码是byte b = (byte) 7;
. 之所以如此,是因为在 java 中,数字 7 被认为是字面 int 值,因此必须强制转换为 int。
现在其他情况。Double 可以包含浮点值中包含的每个字节,因为它是一个更大的数据类型。所以我们可以说float f = 10.543;
As 10.543 是一个很小的值,应该适合浮点数。这种数字的字面值也被认为是 Double 所以编译器应该隐式地将它转换为浮点数。但事实并非如此,编译器阻止了我们。我们必须在该值之后附加一个F
或。f
为什么在文字值赋值中存在这两种相互冲突的行为?简而言之,如果byte b = 7
可能的话。为什么float f = 10.543
不可能?