-4

我想知道为什么在Java中它通过执行以下操作会产生编译错误:

double d34324.34; //error
float f3342.34; //error

另一方面:

long L32423424; // works fine
double D32432424; // works fine

所以基本上我想知道为什么只有浮点值的语法存在这种限制。

我知道如果将字母标识符(D,d,F,f)放在数字的末尾,它可以工作,但我仍然想知道为什么另一种形式不适用于浮点。只是好奇,我知道如果我输入 3443.43434f 它可以工作。

4

4 回答 4

13
double d34324.34

不分配值,34324.34但尝试使用无效名称声明变量d4324.34

你可能想要

double myDouble = 34324.34d;
long myLong = 34324l;
于 2013-02-18T14:20:09.340 回答
8

点不是标识符(变量名、方法名、类名、参数名等)的有效字符。它在 Java 语言规范的第3.8节中是正确的。所以这永远不会奏效:

double d34324.34;  // error
float f3342.34;    // error

Java 中的有效标识符只能包含字母、数字、“_”和“$”,并且不能以数字开头。请注意,这不包括点。

为什么要用数字命名变量?你确定你的意思不是这样吗?:

double d = 34324.34;
float  f = 3342.34f;
于 2013-02-18T14:19:18.290 回答
2

这是因为它是一个无效的变量声明(语法错误)——只能有字母、数字和下划线;并且不能以数字开头

请参阅此以了解java 中的有效变量名

变量名称可以包含任何字母字符或数字以及下划线 _。您可以为变量命名的主要限制是它们不能包含任何空格。变量名不能以数字开头。

于 2013-02-18T14:20:08.243 回答
0

如果 Value 是 float 还是 double 以使用以 -d 和 -f 结尾的数字来识别 JVM。例如

0.04f(float) and 0.045d(double)

我认为 。是错误的根本原因。谢谢

于 2013-02-18T14:21:03.490 回答