为Java基本数据类型设置后缀的目的是什么?
对不起,这是一个初学者的问题!我正在学习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 因此,在第一种
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
不会执行缩小转换-它将无法编译,因为您正试图将双精度值分配给浮点。(例如,如果您执行了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
,并且会自动执行。