第07部分:Java文件结构

Java 句法的元素有很多,包含单个字符和标记,运算符、表达式、语句和方法,还有类和包。从实际使用的角度出发,最常使用的 Java 程序结构单元是 Java 文件。Java 文件是 Java 编译器能编译的 Java 代码的最小单元。一个 Java 文件中包含以下内容:

• 一个可选的 package 指令;

• 零个或多个 import 或 import static 指令;

• 一个或多个类型定义

当然,这些元素之间可以穿插注释,但必须是这种顺序。这就是 Java 文件中的全部内容了。所有 Java 语句都必须放在方法中(不含 package 和 import 指令,它们不是真正的语句),而所有方法都要放在类型定义中。

Java 文件还有一些其他重要的限制。首先,一个文件中最多只能有一个声明为 public 的顶层类。public 类的目的是供其他包中的类使用。但是,在一个类中,声明为 public 的嵌套类或内部类数量不限。

第二个限制涉及到 Java 文件的文件名。如果 Java 文件中有一个 public 类,那么这个文件的名称必须和这个类的名称相同,然后再加上扩展名 .java。因此,如果 Point 定义为public 类,那么它的源码要放在名为 Point.java 的文件中。不管类是否为 public,一个文件中只定义一个类,并使用类名命名文件,是良好的编程习惯。

编译 Java 文件时,其中定义的各个类会编译到独自的类文件中;类文件中是 Java 字节码,由 Java 虚拟机解释执行。类文件的名称和其中定义的类名相同,扩展名为 .class。因此,如果 Point.java 文件中定义了一个名为 Point 的类,那么,Java 编译器编译后得到的文件名为 Point.class。在大多数系统中,类文件都存储在包名对应的目录里。因此,com.davidflanagan.examples.Point 类在 com/davidflanagan/examples/Point.class 文件中定义。

Java 解释器知道标准系统类的类文件存储的位置,需要时会加载这些类文件。解释器运行程序时,如果需要使用名为 com.davidflanagan.examples.Point 的类,它知道这个类的代码存储在名为 com/davidflanagan/examples/ 的目录中;默认情况下,解释器会在当前目录中寻找这个子文件夹。如果想告诉解释器在当前目录之外的位置寻找,调用解释器时必须使用 -classpath 选项,或者设定 CLASSPATH 环境变量。

你可能感兴趣的:(第07部分:Java文件结构)