我想知道为什么在Java中通过执行以下操作会产生编译错误:
double d34324.34; //error
float f3342.34; //error
另一方面:
long L32423424; // works fine
double D32432424; // works fine
所以基本上我想知道为什么只有浮点值的语法使用这个限制。
我知道如果字母标识符(D,d,F,f)放在其工作的数字的末尾,但我仍然想知道为什么另一种形式不适用于浮点数。 只是好奇,我知道如果我键入3443.43434f它的工作原理。
答案 0 :(得分:10)
double d34324.34
未指定34324.34
的值,但会尝试使用无效名称d4324.34
声明变量。
你可能想要
double myDouble = 34324.34d;
long myLong = 34324l;
答案 1 :(得分:8)
点不是标识符的有效字符(变量名,方法名,类名,参数名等)。它在Java语言规范的§3.8部分中是正确的。所以这永远不会奏效:
double d34324.34; // error
float f3342.34; // error
Java中的有效标识符只能包含字母,数字,“_”和“$”,并且不能以数字开头。请注意,这不包括点。
为什么要用变量命名变量?你确定你的意思不是这样的,而是吗?:
double d = 34324.34;
float f = 3342.34f;
答案 2 :(得分:2)
这是因为它是一个无效的变量声明(语法错误) - 只能有字母,数字和下划线;并且不能以数字开头
请参阅此内容以了解valid variable names in java
变量名称可以包含任何字母字符或数字 下划线_。你可以给你的名字的主要限制 变量是它们不能包含任何空格。你不能 用数字开始一个变量名。
答案 3 :(得分:0)
如果Value是float还是double,则使用数字end -d和-f标识JVM。例如
0.04f(float) and 0.045d(double)
我想。是错误的根本原因。 感谢