双重,浮动和长期声明

Rol*_*all -4 java floating-point

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

double d34324.34; //error
float f3342.34; //error
Run Code Online (Sandbox Code Playgroud)

另一方面:

long L32423424; // works fine
double D32432424; // works fine
Run Code Online (Sandbox Code Playgroud)

所以基本上我想知道为什么只有浮点值的语法使用这个限制.

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

Den*_*ret 10

double d34324.34
Run Code Online (Sandbox Code Playgroud)

不指定值,34324.34但尝试声明具有无效名称的变量d4324.34.

你可能想要

double myDouble = 34324.34d;
long myLong = 34324l;
Run Code Online (Sandbox Code Playgroud)

  • 我的问题应该得到-5分.你是对的,这是SCJP考试的一本书的技巧,我陷入了困境.我必须在屏幕前呆太久.#新鲜空气 (4认同)

Ósc*_*pez 8

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

double d34324.34;  // error
float f3342.34;    // error
Run Code Online (Sandbox Code Playgroud)

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

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

double d = 34324.34;
float  f = 3342.34f;
Run Code Online (Sandbox Code Playgroud)