在計算機科學中,字面量(literal)是用於表達源代碼中一個固定值的表示法(natation)。幾乎所有計算機編程語言都具有對基本值的字面量表示,諸如:整數、浮點數以及字符串;而有很多也對布爾類型和字符類型的值也支持字面量表示;還有一些甚至對枚舉類型的元素以及像數組、記錄和對象等符合類型的值也支持字面量表示法。
在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"
"two\nlines"
"\"This is in quotes\""
為字符串定義的字符轉義序列和八進制/十六進制記法在字符串內的工作方法一樣。關於Java 字符串應注意的一件重要的事情是它們必須在同一行開始和結束。不像其他語言有換行連接轉義序列。
注意:你可能知道,在大多數其他語言中,包括C/C++ ,字符串作為字符的數組被實現。然而,在Java 中並非如此。在Java中,字符串實際上是對象類型。因為Java 對字符串是作為對象實現的,因此,它有廣泛的字符串處理能力,而且功能既強又好用。
其他字面量
上一張Java中各個數據類型具體的正確字面量的表:
數據類型
直接量描述
舉例
int
整數直接量(可用二、十、八、十六進制表示)
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
錯誤的字面量
類似以下的字面量都輸錯誤的: