- 實戰Java虛擬機:JVM故障診斷與性能優化(第2版)
- 葛一鳴
- 592字
- 2024-01-08 16:10:51
1.3.1 詞法的定義
詞法規定了Java語法中每一個單詞如何書寫才是合乎規范的。比如,詞法定義中規定了Java的關鍵字,如果開發人員使用Java的關鍵字作為變量名,顯然無法通過編譯。
下面簡單地看一個有關標識符的定義:

這里定義了標識符由一個標識符串組成,但是不能是關鍵字、布爾字面量或者Null字面量。而標識符串是一個由字母開頭的、由字母或數字構成的串。這里的字母或數字并非簡單的ABC,而是指任意的Unicode字符。
根據這個定義便可以知道,下面的方法是不符合規范的:

因為new為Java關鍵字,不屬于標識符,因此不能用作方法名,而下述代碼則是符合規范的:

雖然上述代碼使用了中文作為方法名,但是根據定義,“打”、“印”屬于Unicode字符,因此是符合規范的名字,也構成了符合規范的標識符。
有關詞法另一個典型的案例就是數字的表示。在JDK 1.7中,以下都屬于符合規范的數字:
· 整數
○ 0、2、0372、0xDada_Cafe、1996、0x00_FF__00_FF
· 長整形
○ 01、0777L、0x100000000L、2_147_483_648L、0xC0B0L
· 單精度浮點
○ 1e1f、2.f、.3f、0f、3.14f、6.022137e+23f
· 雙精度浮點
○ 1e1、2.、.3、0.0、3.14、1e-9d、1e137
就直觀感覺而言,上述有些數字真是長得太奇怪了,比如0xDada_Cafe,它不更像一個英語單詞嗎?而事實上,這是一個符合規范的16進制整數。Java語言規范規定,以0x字符開始的數表示16進制,同時,為了可讀性,也允許在數字中間增加下畫線進行分割(這是JDK 1.7中引入的)。
得益于Java語言規范對于詞法的定義,現在Java程序可以使用更加豐富的方法來定義數字,無論是在可讀性還是在表達能力上,都非常強勁。