对不起初学者的问题!我正在学习 Java,我对一个主题有点困惑。
例如,我将变量声明并初始化为浮点数,例如:
float myVariable = 9.5;
在一些在线教程中,我看到浮点数是这样声明和初始化的,但也有这样的后缀:
float myVariable = 9.5F;
如果我已经在说“float myVariable”,那么后缀的目的是什么?
谢谢!
对不起初学者的问题!我正在学习 Java,我对一个主题有点困惑。
例如,我将变量声明并初始化为浮点数,例如:
float myVariable = 9.5;
在一些在线教程中,我看到浮点数是这样声明和初始化的,但也有这样的后缀:
float myVariable = 9.5F;
如果我已经在说“float myVariable”,那么后缀的目的是什么?
谢谢!
浮点字面量默认为double
类型。所以,9.5
是double不是float。为了让它浮动,我们f
在最后附加一个。
所以,在第一种情况下:
float myVariable = 9.5;
您正在尝试将 double 类型文字分配给 float 类型变量,这需要显式类型转换。该语句不会编译。您需要在那里添加演员表:
float myVariable = (float) 9.5;
在第二种情况下:
float myVariable = 9.5F;
没有转换。
Java 使用带有这些原始类型的后缀,这里是一个简短的介绍:
漂浮
float fVariable = 5.5
默认情况下为 double 而float fVariable = 5.5f
使其浮动
长
long lVariable = 55
这里的文字 55 默认是 int 类型,但long lVariable = 55l
它是 long 类型。
双倍的
double dVariable = 5.5
和double dVariable = 5.5d
相似,但这里 d 后缀是可选的
你试过编译你的代码吗?
这不会编译,因为默认情况下所有浮点文字都是doubles
float myVariable = 9.5;
您可以使用显式转换操作
float myVariable = (float) 9.5;
但它太冗长了,所以谢天谢地引入了“F”后缀:
float myVariable = 9.5F;
顺便说一句,大写('F')和小写('f')都是允许的。
认为提供引用规范的答案可能值得。从§3.10.2 浮点文字:
如果浮点文字以 ASCII 字母 F 或 f 为后缀,则它的类型为 float;否则它的类型是双...
换句话说,9.5
and9.5f
是两种不同类型的不同文字。
9.5
是类型double
,并且不能在float
没有显式转换的情况下分配给 a9.5f
是类型的float
(因此显然可以分配给类型的变量float
)