在java中正确声明浮动和长类型?

Dee*_*pak 2 java floating-point double

所以我明白,如果我声明一个长变量,我需要在数字的末尾添加一个 L。

long x = 123L;
Run Code Online (Sandbox Code Playgroud)

与 float 类型相同,我需要在变量末尾添加 F。

float x = 1.1F;
Run Code Online (Sandbox Code Playgroud)

但我想知道为什么在这两种情况下它的做法不同?我的意思是如果我声明一个 int 或任何其他数据类型,它就完成了

int x = 1;
Run Code Online (Sandbox Code Playgroud)

为什么这两种数据类型的声明是以某种方式完成的(对于 long 和 float 类型)。我知道它是这样做的,我只是想了解为什么要这样做?

Lui*_*oza 5

不同之处在于字面值。根据Primitive values,文字数值属于 forintdouble类型。

来自Java 语言规范。第 3 章词法结构。3.10 文字

long如果以 ASCII 字母Ll(ell)为后缀,则为整数文字类型;否则它是类型int§4.2.1

(……)

如果浮点文字float以 ASCII 字母F或为后缀,则它属于类型f。否则它的类型是double并且可以选择后缀为 ASCII 字母Dd(第4.2.3 节)。