Java语言规格说明
1.程序结构
Java语言的源程序代码由一个或多个编译单元(compilation unit)组成,每个编译单元只能包含下列内容(空格和注释除外):
* 一个程序包语句(package statement )
* 引入语句(import statements)
* 类的声明(class declarations)
* 界面声明(interface declarations)
每个Java的编译单元可包含多个类或界面,但是每个编译单元却至多有一个类或者界面是公共的。
Java 的源程序代码被编译之后,便产生了Java字节代码(bytecode)。Java的字节代码由一些不依赖于机器的指令组成,这些指令能被Java的运行系(runtime system)有效地解释。Java的运行
系统工作起来如同一台虚拟机。
在当前的Java实现中,每个编译单元就是一个以.java为后缀的文件。每个编译单元有若干个类,编译后,每个类生成一个.class文件。.class文件是Java虚机器码。
2. 词法
问题 在编译的过程中,Java源程序代码中的字符被划分为一系列的标记(token)。Java编译器可以识别五种标记: 标识符、关键字、字面量、运算符以及特殊分隔符。注释以及诸如空格、制表符、换行符等字符 ,都不属于标识之列,但他们却常被用来分隔标记。
Java程序的编写采用泛代码Unicode字符集,若采用其它的字符集,则需在编译前转换成Unicode。
2.1 注释
Java语言提供了3种形式的注释:
//text 从//到本行结束的所有字符均作为注释而被编译器忽略。
/* text */ 从/*到*/ 间的所有字符会被编译器忽略。
/** text */
当这类注释出现在任何声明之前时将会作特殊处理,它们不能再用在代码的任何地方。这类注释意味着被括起来的正文部分,应该作为声明项目的描述,而被包含在自动产生的
文档中。
2.2 标识符
标识符的首字符必须是一个字母,下划线("_")或美元符号("$")。 后面的字符也可是数字0-9。 Java使用泛代码字符集,为了便于识别好一合法标识符,下面列出它的“字母”:
* 大写字母“A”~“Z”
* 小写字母“a”~“z”
* 泛代码(Unicode)
中所有字符编码在十六进制数00C0之前的字符。标识符中,首字母后的字符可以是任意的。当然,Unicode区段中那些被保留作特殊字符的除外。由此,“garton”及“MjΦlner”都是合法标识符,但是,包括诸如“π”的字符串却不是合法的。
2.3 关键字
下面的标识符被保留用作关键字,他们不能作任何其它的用途。
abstract default goto* null synchronized
boolean do if package this
break double implements private threadsafe
byte else import protected throw
byvalve * extends instanceof publ
ic transient
case false int return true
catch final interface short try
char finally long static void
class float native super while
const * for new switch
continue
其中,加*标记后是被保留但当前却未使用的。
2.4 字面量
字面量(literal)是某些类型值的基本表述,这些类型包括整型,浮点型,布尔量,字符及字符串。
2.4.1 整型字面量
整数可有三种表示形式: 十进制,八进制和十六进制。一个十进制整型字面量由一系列的数字组成,但它的第一个数字不能是0(有时十进制数字也可象下面讲的那样加后缀)。整数也可表达成八进制或十六进制形式。以0开头的整型字面量,意味着它是一个十六进制的。十六进制整数可以包括数字0-9以及字母a-f及A-F。八进制整数中则只能是出现数字0-7。在超过32位所能表示的范围之前,整型字面量的类型即为int,否则为long型。一个整型字面量可通过加后缀L或l而强迫成long型。
下面的均为合法的整型字面量。
2 2L 0777
2.4.2 浮点字面量
一个浮点字面量可包括以下部分: 一个十进制整数,一个小数点“.”,小数部分(另外一个十进制整数),指数部分,一个类型后缀。指数部分是一个e或E后跟一个整数。浮点字面量