4

对不起初学者的问题!我正在学习 Java,我对一个主题有点困惑。

例如,我将变量声明并初始化为浮点数,例如:

float myVariable = 9.5;

在一些在线教程中,我看到浮点数是这样声明和初始化的,但也有这样的后缀:

float myVariable = 9.5F;

如果我已经在说“float myVariable”,那么后缀的目的是什么?

谢谢!

4

4 回答 4

7

浮点字面量默认为double类型。所以,9.5double不是float。为了让它浮动,我们f在最后附加一个。

所以,在第一种情况下:

float myVariable = 9.5;

您正在尝试将 double 类型文字分配给 float 类型变量,这需要显式类型转换。该语句不会编译。您需要在那里添加演员表:

float myVariable = (float) 9.5;

在第二种情况下:

float myVariable = 9.5F;

没有转换。

于 2013-06-25T21:07:54.957 回答
6

Java 使用带有这些原始类型的后缀,这里是一个简短的介绍:

漂浮

float fVariable = 5.5默认情况下为 double 而float fVariable = 5.5f使其浮动

long lVariable = 55这里的文字 55 默认是 int 类型,但long lVariable = 55l它是 long 类型。

双倍的

double dVariable = 5.5double dVariable = 5.5d相似,但这里 d 后缀是可选的

于 2013-06-25T21:29:32.093 回答
4

你试过编译你的代码吗?

这不会编译,因为默认情况下所有浮点文字都是doubles

float myVariable = 9.5;

您可以使用显式转换操作

float myVariable = (float) 9.5;

但它太冗长了,所以谢天谢地引入了“F”后缀:

float myVariable = 9.5F;

顺便说一句,大写('F')和小写('f')都是允许的。

于 2013-06-25T21:15:20.013 回答
1

认为提供引用规范的答案可能值得。从§3.10.2 浮点文字:

如果浮点文字以 ASCII 字母 F 或 f 为后缀,则它的类型为 float;否则它的类型是双...

换句话说,9.5and9.5f是两种不同类型的不同文字。

  • 9.5是类型double,并且不能在float没有显式转换的情况下分配给 a
  • 9.5f是类型的float(因此显然可以分配给类型的变量float
于 2013-06-25T21:38:33.257 回答