为了更好地组织类,java提供了一种包机制。包是类的容器,用于分隔类名空间。如果未指定包名,则所有示例都属于默认的匿名包。java中的包通常包含相关的类。例如,所有关于车辆的类都可以放入名为transportation的包中。程序员可以使用package来指示源文件中的类属于哪个特定的包。package语句的格式为:packagepkg1[。pkg2[。pkg3
如果程序中有package语句,则它必须是源文件中的第一条可执行语句,并且前面只能有注释或空行。此外,一个文件最多只能有一个package语句。包的名称具有层次关系,层之间用点分隔。包层次结构必须与java开发系统的文件系统结构相同。通常,所有的包名都是小写字母,这与类名以大写字母开头,每个单词的第一个字母也是大写的命名约定不同。使用包描述时,不需要导入相同的包或包的任何元素。import语句仅用于将其他包中的类引入当前命名空间。当前包始终位于当前命名空间中。如果文件声明如下:packagejava.awt.image文件,文件必须存储在windows的javaawtimage目录或unix的java/awt/image目录中。总之,java引入包的主要原因是java本身的跨平台特性。因为java中的所有资源也是以文件的形式组织起来的,其中主要包含了大量需要组织和管理的类文件。java还使用目录树结构。虽然各种常用操作系统平台的文件管理都是以目录树的形式组织的,但它们对目录的分隔方式却各不相同。为了区别于各种平台,java使用了“.”分隔目录。