在計算機科學中,字面量(literal)是用於表達源代碼中一個固定值的表示法(natation)。幾乎全部計算機編程語言都具備對基本值的字面量表示,諸如:整數、浮點數以及字符串;而有不少也對布爾類型和字符類型的值也支持字面量表示;還有一些甚至對枚舉類型的元素以及像數組、記錄和對象等符合類型的值也支持字面量表示法。java
在Java中通俗的說:int i = 1;把整數1賦值給int型變量i,整數1就是Java字面量,
一樣,String s = "abc";中的abc也是字面量。程序員
整數多是在典型的程序中最經常使用的類型。任何一個數字的值就是一個整數字面量。例如1,2,3和42。這些都是十進制的值,這意味着對他們的描述基於數字10。還有另外2 種進制被整數字面量使用,八進制(octal,基數是8)和十六進制(hexadecimal,基數是16)。在Java 中對八進制的值經過在它的前面加一個前導0來表示。正常的十進制的數字不用前導零。這樣,看起來有效的值09將從編譯器產生一個錯誤,由於9超出了八進制的範圍0~7。程序員對數字更經常使用的是十六進制,它清楚地與8的大小相匹配,如8,16,32,和64位。經過前導的0x或0X表示一個十六進制的字面量。十六進制數的範圍是0~15,這樣用A~ F(或a~f)來替代10~15。編程
整數字面量產生int 值,在Java 中它是32位的整數值。既然Java 對類型要求嚴格,你可能會納悶,將一個整數字面量賦給Java 的其餘整數類型如byte 或long 而沒有產生類型不匹配的錯誤,怎麼可能呢。慶幸的是,這個問題很好解決。當一個字面量的值被賦給一個byte 或short型的變量時,若是字面量的值沒有超過對應類型的範圍時不會產生錯誤。數組
Java 中的字符串字面量和其餘大多數語言同樣——將一系列字符用雙引號括起來。字符串的例子如:編程語言
"Hello World" spa
"two\nlines" .net
"\"This is in quotes\"" 3d
爲字符串定義的字符轉義序列和八進制/十六進制記法在字符串內的工做方法同樣。關於Java 字符串應注意的一件重要的事情是它們必須在同一行開始和結束。不像其餘語言有換行鏈接轉義序列。對象
注意:你可能知道,在大多數其餘語言中,包括C/C++ ,字符串做爲字符的數組被實現。然而,在Java 中並不是如此。在Java中,字符串其實是對象類型。由於Java 對字符串是做爲對象實現的,所以,它有普遍的字符串處理能力,並且功能既強又好用。ci
上一張Java中各個數據類型具體的正確字面量的表:
數據類型 |
直接量描述 |
舉例 |
int |
整數直接量(可用2、10、8、十六進制表示) |
12 |
-12 |
||
12 |
||
0b12 |
||
12 |
||
0x12 |
||
long |
在整數直接量(也就是int型)後面,加上字母l或L |
12l |
-12L |
||
float |
在數字(包括整數和小數)後面,加上字母f或F |
3f |
-3.14F |
||
3.14e5F |
||
-3.14E-5f |
||
.5f |
||
double |
1.浮點數直接量 2.科學計數法直接量 3.在數字(包括整數和小數)後面加上字母d或D |
3d |
3.14E-05 |
||
-0.5 |
||
boolean |
布爾直接量true、false |
TRUE |
FALSE |
||
char |
1.單引號內的單個字符 2.單引號內的轉義字符 |
‘a’ |
‘中’ |
||
‘\n’ |
||
‘\u0000’ |
||
String |
雙引號內的字符序列 |
「abc」 |
「中國」 |
||
null |
引用類型的空指向 |
null |
相似如下的字面量都輸錯誤的:
l 比int的最大值還要大1的直接量2147483648是錯誤的(由於超過int表示的範圍,應該使用2147483648L表示);
l 比long的最大值大1的直接量9223372036854775808L是錯誤的(由於超過long表示的範圍,應該使用 BigInteger類來表示:BigInteger b = new BigInteger("9223372036854775808");)
l 一個單引號:''' (正確的寫法是:'\'' )
l 一個反斜槓:'\' (正確的寫法是:'\\' )
l 帶有"引號的字符串:"abc"xyz" (正確的寫法是:"abc\"xyz")
l 帶有\反斜槓的字符串:"abc\xyz" (正確的寫法是:"abc\\xyz")