为Java原始数据类型设置后缀的目的是什么?

时间:2013-06-25 21:06:54

标签: java primitive-types

抱歉初学者问题!我正在学习Java,我对一个主题感到有点困惑。

例如,我将一个变量声明并初始化为float,如:

float myVariable = 9.5;

在网上的一些教程中,我看到浮动声明被宣布和初始化,但也有这样的后缀:

float myVariable = 9.5F;

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

谢谢!

4 个答案:

答案 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.5double dVariable = 5.5d相似但此处d后缀是可选的

答案 3 :(得分:1)

认为提供引用规范的答案可能是值得的。来自 §3.10.2 Floating-Point Literals:

  

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

换句话说,9.59.5f是两个不同类型的不同文字。

  • 9.5属于double类型,如果没有,则无法分配给float 显式铸造
  • 9.5f属于float类型(因此显然可以 分配给float
  • 类型的变量