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

为Java基本数据类型设置后缀的目的是什么?,java,primitive-types,Java,Primitive Types,对不起,这是一个初学者的问题!我正在学习Java,有一个话题我有点困惑 例如,我将一个变量声明并初始化为浮点数,例如: float myVariable = 9.5; 在一些在线教程中,我看到浮点数是这样声明和初始化的,但也带有如下后缀: float myVariable = 9.5F; 若我已经在说“float myVariable”,那个么后缀的用途是什么 谢谢 浮点文本默认为double类型。因此,9.5是double而不是float。为了使其浮动,我们在末尾附加一个f 因此,在第一种

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

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

float myVariable = 9.5;
在一些在线教程中,我看到浮点数是这样声明和初始化的,但也带有如下后缀:

float myVariable = 9.5F;
若我已经在说“float myVariable”,那个么后缀的用途是什么


谢谢

浮点文本默认为
double
类型。因此,
9.5
是double而不是float。为了使其浮动,我们在末尾附加一个
f

因此,在第一种情况下:

float myVariable = 9.5;
您试图将双类型文字分配给浮点类型变量,这需要显式类型转换。该语句无法编译。您需要在此处添加强制类型转换:

float myVariable = (float) 9.5;
在第二种情况下:

float myVariable = 9.5F;

没有转换。

您是否尝试编译代码

这将不会编译,因为默认情况下,所有浮点文本都是双倍的

float myVariable = 9.5;
您可以使用显式强制转换操作

float myVariable = (float) 9.5;
但它太冗长了,所以谢天谢地引入了“F”后缀:

float myVariable = 9.5F;

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

Java将后缀与这些原语类型一起使用,下面是一个简短的介绍:

浮动

float fVariable=5.5
默认为双精度,而
float fVariable=5.5f
使其浮动

long

long lVariable=55
这里literal 55默认为int类型,但
long lVariable=55l
使其成为long类型

双倍


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

认为可能值得提供引用规范的答案。从

如果浮点文本的后缀为 ASCII字母F或F;否则它的类型是双

换句话说,
9.5
9.5f
是两种不同类型的文本

  • 9.5
    属于
    double
    类型,不能在没有 显式铸造
  • 9.5f
    属于
    float
    类型(因此显然可以是 分配给类型为
    float
    )的变量

感谢您的澄清。所以“float myVariable=9.5;”与“double myVariable=9.5;”相同吗?(因为两者都是双值)。
float myVariable=9.5
不会执行缩小转换-它将无法编译,因为您正试图将双精度值分配给浮点。(例如,如果您执行了
myVariable+=9.5
),则会发生缩小转换)@user2521738。不,它们本质上是不同的。
myVariable
的类型在这两种情况下都不同。@RussellZahniser。在Java中,赋值转换是自动进行的。所以,这很好。
float myVariable=9.5
无法编译,请尝试。大写字母“F”通常是首选,如果只是为了与长字符的“L”后缀对称的话。
l
后缀看起来太像
1
了,不实用。在“float fVariable=100”中,100默认为整数。所以,要使“float fVariable=100”成为一个float,我是否需要执行“float fVariable=100f”?文字100是int,但当您将它赋给一个float类型变量(float fVariable=100)时,fVariable的值是float(即100.0),但直到int max值(即2147483647)因此,如果您尝试float fVariable=2147483648或更大,则必须附加l或l,否则它将无法编译。@user2521738 No.
float x=100,因为
100
的类型为
int
,并且会自动执行。