2013-06-25 28 views
2

對不起,這對初學者提出問題!我正在學習Java,對某個主題我有點困惑。爲Java Primitive Data Types提供後綴的目的是什麼?

例如,我聲明和初始化變量作爲浮動,如:

float myVariable = 9.5; 

在一些在線教程,我看到被宣佈花車和initalized這樣,但也帶有後綴,如本:

float myVariable = 9.5F; 

如果我已經說過「float myVariable」,那麼後綴的用途是什麼?

謝謝!

回答

3

Java使用後綴與這些原語類型,這裏是一個簡短的介紹:

浮動

float fVariable = 5.5是默認雙,而float fVariable = 5.5f使得浮

long lVariable = 55這裏的文字55是默認的int類型,但是long lVariable = 55l使它變長。

double dVariable = 5.5double dVariable = 5.5d是相似的,但這裏d後綴是可選的

+0

在「float fVariable = 100」中,100默認爲一個整數,因此,爲了使「float fVariable = 100」爲浮點數,我需要做「float fVariable = 100f」嗎? – Jacob

+0

literal 100是int,它像一個浮點型變量(float fVariable = 100),fVariable的值是float(即100.0),但是直到int max值(即2147483647),所以如果你嘗試float fVariable = 2147483648或更大,你必須追加l或L或它不會編譯 – Kalher

+0

@ user2521738編號'float x = 100;'是允許的,因爲'100'是'int'類型和[擴展轉換](http://docs.oracle.com/javase/) specs/jls/se7/html/jls-5.html#jls-5.1.2)自動執行。 – DannyMo

7

浮點文字默認爲double類型。所以,9.5double不是float。爲了使它浮動,我們在末尾附加一個f

因此,在第一種情況:

float myVariable = 9.5; 

您試圖分配double類型的文字爲float類型的變量,這需要一個明確的類型轉換。該聲明不會編譯。您需要添加一個鑄有:

float myVariable = (float) 9.5; 

而在第二種情況:

float myVariable = 9.5F; 

沒有轉換。

+0

感謝您的澄清。所以「float myVariable = 9.5;」與「double myVariable = 9.5;」是一樣的嗎? (因爲兩者都是雙值)。 – Jacob

+0

'float myVariable = 9.5;'不會執行縮小的轉換 - 它將無法編譯,因爲您試圖將一個double值分配給一個float。 (例如,如果您的'myVariable + = 9.5',則會發生縮小的轉換) –

+0

@ user2521738。不,它們本質上不一樣。兩種情況下'myVariable'的類型都不相同。 –

4

你試過編譯你的代碼嗎?

這不會編譯,因爲默認情況下,所有的浮點文字是doubles

float myVariable = 9.5; 

您可以使用顯式類型轉換操作

float myVariable = (float) 9.5; 

但它太冗長,所以幸好「F」後綴被引入:

float myVariable = 9.5F; 

順便提一下,UPPER('F')和lower(' 'f')個案被允許。

+0

大寫字母'F'通常是首選,如果僅用於與'L'後綴長對稱。'l'後綴看起來太像'1'是實用的。 –

1

認爲這可能是值得提供援引規範的答案。從§3.10.2 Floating-Point Literals:

甲浮點文字的類型爲float如果它與 ASCII字母F或f爲後綴;否則其類型是雙...

換言之,9.59.5f是兩個不同的文字具有不同類型。

  • 9.5double類型的,並且不能被分配到一個float而不 明確的鑄造
  • 9.5ffloat型的(並且因此顯然可以 分配給float類型的變量)
相關問題