从词法角度来看,Java源程序由White Space、Comment、Token三部分构成。
White Space
White Space 包括space(空格,可键盘空格键输入)、horizontal tab (水平制表符,可用键盘Tab键输入)、form feed(换页符,键盘没有对应按键)、Line Terminator(行终止符)。
Line Terminator
Line Terminator有LF(换行)、CR(回车)、CR LF三种形式。
Comment
Comment有/* text */ 和//text两种形式。
Token
Token可进一步划分为Identifier(标签符)、Literal(字面量)、Keyword(关键字)、Separator(分隔符)、Operator(运算符)。
Identifier
Identifier有两个要求,一必须以“Java letter“开头,后接0到N个“Java letter-or-digit“;二是不能是关键字、true、false、null。“Java letter”可用Character#isJavaIdentifierStart方法判断,可以是字母(不限于英文字母)、下划线(_)和美元符号($),“Java letter-or-digit”可用Character#isJavaIdentifierPart判断,可是“Java letter”或数字(0-9)
Literal
Literal是指在源码中表示primitive type、String type、null type。可进一步分为:Integer Literal(如:1)、Floating Literal(如1.1)、Boolean Literaal(如true、false)、Character Literal(如’a’)、String Literal(发”abc”)、Null Literal(只有一个null)。后续文章会有详细介绍。
Keyword
Keyword字有50个,后续文章会有详细介绍。
abstract continue for new switch
assert default if package synchronized
boolean do goto private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
true、false似乎是关键字,但技术上是Boolean Literal;
null看起来也似乎是关键字,但技术上是Null Literal。
Separator
Separator有12个,后续文章会有详细介绍。
( ) { } [ ] ; , . … @ ::
Operator
Operator有38个,后续文章会有详细介绍。
= > < ! ~ ? : ->
== >= <= != && || ++ –
+ - * / & | ^ % << >> >>>
+= -= *= /= &= |= ^= %= <<= >>= >>>=