Java package包的声明(附带实例)
在 Java 中,你可以将相关类放入一个包中。使用包更有利于组织代码,并可将自己的代码与其他人提供的代码库分离。
正如你所看到的,标准 Java 库分布在许多包中,包括 java.lang、java.util、java.math 等。
使用包的主要原因是确保类名的唯一性。假设两个编程人员都想出了实现 Element 类的好主意。(事实上,仅仅在 Java API 中,就有至少 5 名开发人员有这种类似的好主意。)只要他们都将自己的类放在不同的包中,就不会有冲突。
接下来,你将学习如何声明一个包。包名是一个以点分隔的标识符列表,例如 java.util.regex。
为了保证包名的唯一性,最好使用反向书写的互联网域名(这显然是唯一的)。例如,我拥有域名 biancheng.com。那么对于我的项目,就可以使用例如 com.biancheng.corejava 的包名称。此规则的一个主要例外是标准 Java 库,其包名以 java 或 javax 开头。
注意在 Java 中,包并不是嵌套的。例如,包 java.util 和 java.util.regex 彼此无关。每一个包都有自己独立的类集合。
要在包中放置一个类,可以添加一个 package 语句作为源文件的第一个语句:
Java 中也有一个没有名字的默认包(default package),可以用于一些简单的程序。如果要向默认包添加类,请不要提供 package 语句。但是,不建议使用默认包。
当从文件系统读取类文件时,路径名需要与包名匹配。例如,Employee.class 文件必须位于子目录 com/biancheng/corejava 中。
如果以相同的方式排列源文件并从包含初始包名的目录中编译,则类文件将被自动放置在正确的位置。假设 EmployeeDemo 类使用 Employee 对象,并将其编译为:
编译器生成类文件 com/biancheng/corejava/EmployeDemo.class 和 com/biancheng/corejava/ Eemployee.class。可以通过指定完全限定类名来运行程序:
如果源文件不在与其包名匹配的子目录中,那么 javac 编译器不会报错,并能够生成类文件,但你必须将类文件放在正确的位置。
使用 -d 选项来运行 javac 是一个良好的习惯。这样类文件将会在独立的目录中生成,而不会和源文件的目录混在一起,这样它们都会有正确的子目录结构。
正如你所看到的,标准 Java 库分布在许多包中,包括 java.lang、java.util、java.math 等。
使用包的主要原因是确保类名的唯一性。假设两个编程人员都想出了实现 Element 类的好主意。(事实上,仅仅在 Java API 中,就有至少 5 名开发人员有这种类似的好主意。)只要他们都将自己的类放在不同的包中,就不会有冲突。
接下来,你将学习如何声明一个包。包名是一个以点分隔的标识符列表,例如 java.util.regex。
为了保证包名的唯一性,最好使用反向书写的互联网域名(这显然是唯一的)。例如,我拥有域名 biancheng.com。那么对于我的项目,就可以使用例如 com.biancheng.corejava 的包名称。此规则的一个主要例外是标准 Java 库,其包名以 java 或 javax 开头。
注意在 Java 中,包并不是嵌套的。例如,包 java.util 和 java.util.regex 彼此无关。每一个包都有自己独立的类集合。
要在包中放置一个类,可以添加一个 package 语句作为源文件的第一个语句:
package com.biancheng.corejava; public class Employee{ ... }现在 Employee 类就是 com.biancheng.corejava 包中的一部分了,而且它的完全限定名称(fully qualified name)就是 com.biancheng.corejava.Employee。
Java 中也有一个没有名字的默认包(default package),可以用于一些简单的程序。如果要向默认包添加类,请不要提供 package 语句。但是,不建议使用默认包。
当从文件系统读取类文件时,路径名需要与包名匹配。例如,Employee.class 文件必须位于子目录 com/biancheng/corejava 中。
如果以相同的方式排列源文件并从包含初始包名的目录中编译,则类文件将被自动放置在正确的位置。假设 EmployeeDemo 类使用 Employee 对象,并将其编译为:
javac com/biancheng/corejava/EmployeeDemo.java
编译器生成类文件 com/biancheng/corejava/EmployeDemo.class 和 com/biancheng/corejava/ Eemployee.class。可以通过指定完全限定类名来运行程序:
java com.biancheng.corejava.EmployeeDemo
如果源文件不在与其包名匹配的子目录中,那么 javac 编译器不会报错,并能够生成类文件,但你必须将类文件放在正确的位置。
使用 -d 选项来运行 javac 是一个良好的习惯。这样类文件将会在独立的目录中生成,而不会和源文件的目录混在一起,这样它们都会有正确的子目录结构。