抱歉初学者问题!我正在学习Java,我对一个主题感到有点困惑。
例如,我将一个变量声明并初始化为float,如:
float myVariable = 9.5;
在网上的一些教程中,我看到浮动声明被宣布和初始化,但也有这样的后缀:
float myVariable = 9.5F;
如果我已经说“浮动myVariable”,那么后缀的目的是什么?
谢谢!
答案 0 :(得分:7)
浮点文字默认为double
类型。因此,9.5
double 而不是 float 。为了使它浮动,我们在末尾追加f
。
所以,在第一种情况下:
float myVariable = 9.5;
您正在尝试将double类型文字分配给float类型变量,这需要显式的类型转换。该声明不会编译。你需要在那里添加一个演员:
float myVariable = (float) 9.5;
在第二种情况下:
float myVariable = 9.5F;
没有转换。
答案 1 :(得分:4)
您是否尝试过编译代码?
这不会编译,因为默认情况下所有浮点文字都是doubles
float myVariable = 9.5;
您可以使用显式强制转换操作
float myVariable = (float) 9.5;
但它太冗长了,谢天谢地,'F'后缀被引入了:
float myVariable = 9.5F;
BTW,允许UPPER('F')和lower('f')两种情况。
答案 2 :(得分:3)
Java使用带有这些基元类型的后缀,这里有一个简短的介绍:
<强>浮强>
float fVariable = 5.5
默认为双倍,而float fVariable = 5.5f
使其浮动
<强>长强>
long lVariable = 55
这里的文字55默认为int类型,但long lVariable = 55l
使其为long类型。
<强>双强>
double dVariable = 5.5
和double dVariable = 5.5d
相似但此处d后缀是可选的
答案 3 :(得分:1)
认为提供引用规范的答案可能是值得的。来自 §3.10.2 Floating-Point Literals:
浮点文字的类型为float,如果后缀为 ASCII字母F或f;否则它的类型是双倍的......
换句话说,9.5
和9.5f
是两个不同类型的不同文字。
9.5
属于double
类型,如果没有,则无法分配给float
显式铸造9.5f
属于float
类型(因此显然可以
分配给float
)