天天看點

《Java和Android開發學習指南(第2版)》——第2章,第2.6節字面值

本節書摘來自異步社群《java和android開發學習指南(第2版)》一書中的第2章,第2.6節字面值,作者 【加】budi kurniawan,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

2.6 字面值

很多時候,我們需要給程式中的變量指派,例如,将數字2賦給一個int型變量,或者将字元“c”賦給一個char型變量。為此,需要按照java編譯器能夠了解的格式來書寫值的表示形式。表示一個值的源代碼叫作字面值。有3種類型的字面值:基本類型的字面值、字元串字面值和空字面值。本章隻介紹基本類型的字面值。第4章将介紹空字面值,第5章将介紹字元串字面值。

基本類型的字面值有4種子類型:整數字面值、浮點數字面值、字元字面值和布爾字面值。下面分别介紹這些子類型。

2.6.1 整數字面值

整數字面值可以寫為十進制(以10為基數,這是我們所習慣使用的)、十六進制(以16為基數)和八進制(以8為基數)。例如,100可以表示為100。如下的整數字面值都是十進制的:

作為另一個示例,如下的代碼将10指派給int類型變量x。

使用字首0x或0x表示十六進制的整數。例如,十六進制的數字9e寫作0x9e或0x9e。八進制的整數使用數字0作為字首。例如,如下是八進制的數字567:

整數字面值用于将值賦給byte、short、int和long類型的變量。請注意,我們所指派的值不能超出了一個變量的存儲範圍。例如,一個byte的最大的值是127。是以,如下的代碼将會産生一個編譯錯誤,因為200對于byte類型來說太大了。

要将一個值賦給long類型,在數字的後面帶上一個字母l或l作為字尾。l是首選,因為它很容易和數字1區分開來。一個long類型,可以包含的值在-9223372036854775808l到9223372036854775807l (263)之間。

java初學者常常會問,為什麼需要使用字尾l或l,因為即便沒有字尾,就像如下的代碼一樣,程式仍然能夠編譯。

并不完全是這樣的。沒有字尾l或l的一個整數字面值,會被看作是int類型。是以,如下的代碼将會産生一個編譯錯誤,因為9876543210超出了一個int的存儲能力:

為了解決這個問題,需要在數字的末尾添加一個l或l,如下所示:

long、int、short和byte也可以表示為二進制形式,隻要使用字首字母0b或0b就可以了。例如:

如果一個整數字面值太長了,可讀性會受到影響。為此,從java 7開始,我們可以在整數字面值中使用下劃線來将數字分隔開。例如,如下兩條語句具有相同的含義,但是第2條顯然更容易閱讀。

将下劃線放在什麼位置無關緊要。可以每3個數字使用一個下劃線,就像上面的例子所示,或者任意多個數字使用一個。如下給出更多的例子:

2.6.2 浮點數字面值

像0.4、1.23、0.5e10這樣的數字都是浮點數。浮點數有如下幾個部分:

一個整數部分。

一個小數點。

一個小數部分。

一個可選的指數。

以1.23為例。對于這個浮點數,整數部分是1,小數部分是23,沒有可選的指數。在0.5e10中,0是整數部分,5是小數部分,10是指數。

在java中,有兩種類型的浮點數:

float。32位大小。最大的正的float是3.40282347e+38,最小的正的有限非零的float是1.40239846e-45。

double。64位大小。最大的正的double是1.79769313486231570e+308。最小的正的有限非零的double是4.94065645841246544e-324。

在float和double類型中,0的整數部分是可選的。換句話說,0.5可以寫成.5。此外,指數部分可以表示為e或e。

要表示浮點數字面值,可以使用如下的格式之一:

注意,方括号之間的部分是可選的。

f_和f_部分使得浮點數字面值是float類型。如果沒有這一部分,該浮點數字面值将是double類型。要明确地表示一個double類型的字面值,可以加d或d字尾。要表示一個double類型字面值,使用如下的格式之一:

2.6.3 布爾字面值

布爾類型有兩個值,字面值分别為true和false。例如,如下的代碼聲明了一個布爾變量includesign,并且為其配置設定了一個true值。

2.6.4 字元字面值

字元字面值是一個unicode字元,或者是單引号括起來的一個轉義序列。轉義序列是無法使用鍵盤輸入的unicode字元或者在java中具有特殊作用的unicode字元的一種表示方法。例如,回車字元和換行字元用于終止一行,并且沒有任何可視化的表示。要表示一個換行字元,需要對其轉義,即寫出其字元表示。此外,單引号字元需要轉義,因為單引号用于将字元括起來。

如下是字元字面值的一些示例:

如下是作為轉義序列的字元字面值:

此外,java允許我們對一個unicode字元轉義,以便能夠使用ascii字元的一個序列來表示一個unicode字元。例如,字元£的unicode代碼是00a3。你可以編寫如下的字元字面值來表示字元:

然而,如果你沒有什麼辦法來使用鍵盤輸入這個字元,可以使用将其轉義的方式:

繼續閱讀