官术网_书友最值得收藏!

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程序可以使用更加豐富的方法來定義數字,無論是在可讀性還是在表達能力上,都非常強勁。

主站蜘蛛池模板: 抚州市| 子洲县| 鄂托克前旗| 许昌市| 鄂托克前旗| 德庆县| 绿春县| 米泉市| 若羌县| 阳城县| 元氏县| 靖州| 壤塘县| 保山市| 自贡市| 宾阳县| 理塘县| 平湖市| 团风县| 汝阳县| 赣榆县| 乌鲁木齐县| 米林县| 萝北县| 车险| 兴仁县| 隆化县| 黔西县| 靖宇县| 旬邑县| 张家港市| 丰台区| 乐安县| 巴东县| 庄浪县| 大安市| 民权县| 石楼县| 邹平县| 丹寨县| 水城县|