2013-02-18 30 views
-5

我想知道爲什麼在Java中它給通過執行以下操作的編譯錯誤:雙,浮法和長聲明

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

在另一方面:

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

所以基本上我想知道爲什麼只有浮點值的語法纔有這個限制。

我知道,如果字母標識符(D,d,F,f)放在它工作的數字的末尾,但我仍然想知道爲什麼其他表單不適用於浮點。 只是好奇心,我知道如果我鍵入3443.43434f它的作品。

+2

因爲這就是語言的定義。 – 2013-02-18 14:18:34

+3

'double d = 1.3; float f = 1.3f;' – 2013-02-18 14:18:50

+2

因爲它將「L32423424」解析爲變量的名稱,而不是它的值。 – Boann 2013-02-18 14:20:00

回答

10
double d34324.34 

不分配的34324.34的值,而是試圖聲明一個變量與無效的名稱d4324.34

你可能想

double myDouble = 34324.34d; 
long myLong = 34324l; 
+4

當然,我的問題-5點。是的,你是對的,這是一個SCJP考試的書的技巧,我陷入了陷阱。我一直在屏幕前呆了太久。 #freshAir – Rollerball 2013-02-18 14:37:00

+0

看起來就是這樣,爲什麼我認爲這是一個真正的問題,即使不是最開明的問題;) – 2013-02-18 14:39:14

8

點不是標識符(變量名稱,方法名稱,類名稱,參數名稱等)的有效字符在Java語言規範的§3.8部分中是正確的。所以這行不通:

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

在Java中的有效標識符只能包含字母,數字,「_」和「$」,並且不能以數字開頭。請注意,這不包括點。

你爲什麼要用數字命名變量?你確定你不是故意這樣的事情,而不是?:

double d = 34324.34; 
float f = 3342.34f; 
+0

你錯過了浮動的'f',它應該是這樣的:float f = 3342.34f;除非要將double賦值爲float,否則在使用帶小數點的literal時,double是默認值:float f =(float)3342.34; – 2017-02-13 13:06:16

+0

對,謝謝! – 2017-02-13 14:53:27

2

這是因爲它是一個無效的變量聲明(語法錯誤) - 只能有字母,數字和下劃線;而無法啓動W/A數

見這對了解valid variable names in java

變量名可以包含任何字母字符或數字和下劃線 _。你可以給你的 變量命名的主要限制是它們不能包含任何空格。你不能 開始一個數字的變量名稱。

0

如果該值是海軍報或雙是否使用帶有-d和-f數結束identigy的JVM。例如

0.04f(float) and 0.045d(double) 

我想。是錯誤的根本原因。 謝謝