Java 包 - package
Java 中的包用于对相关类进行分组。 可以将其视为文件目录中的文件夹。 我们使用包来避免名称冲突,并编写更好的可维护代码。 包分为两类:
- 内置包(来自 Java API 的包)
- 用户定义的包(创建自己的包)
内置包
Java API 是一个预先编写的类库,可以免费使用,包含在 Java 开发环境中。
该库包含用于管理输入、数据库编程等的组件。 完整列表可在 Oracles 网站上找到:https://docs.oracle.com/javase/8/docs/api/ 。
该库分为包和类。 这意味着我们可以导入单个类(及其方法和属性),也可以导入包含属于指定包的所有类的整个包。
要使用库中的类或包,我们需要使用 import
关键字:
import package.name.Class; // 引入单个类
import package.name.*; // 引入整个包
引入单个类
如果找到一个想使用的类,例如用于获取用户输入的 Scanner
类,可以使用以下代码:
import java.util.Scanner;
在上面的例子中,java.util 是一个包,而 Scanner 是 java.util 包的一个类。
要使用 Scanner 类,可以创建该类的对象并使用 Scanner 类文档中的任何可用方法。 在我们的示例中,我们将使用 nextLine() 方法,该方法用于读取完整的行:
import java.util.Scanner; class MyClass { public static void main(String[] args) { Scanner myObj = new Scanner(System.in); System.out.println("Enter username"); String userName = myObj.nextLine(); System.out.println("Username is: " + userName); } }
上面示例运行如下所示
引入一个完整包
有很多包可供我们选择使用。 在前面的示例中,我们使用了 java.util 包中的 Scanner 类。 这个包还包含日期和时间工具、随机数生成器和其他实用程序类。
要导入整个包,请以星号 (*) 结束。 以下示例将导入 java.util 包中的所有类:
import java.util.*;
用户定义的包
要创建自己的包,我们需要了解 Java 使用文件系统目录来存储它们。 就像计算机上的文件夹一样:
└── root
└── mypack
└── MyPackageClass.java
要创建包,需要使用 package
关键字:
package mypack;
class MyPackageClass {
public static void main(String[] args) {
System.out.println("This is my package!");
}
}
将文件保存为 MyPackageClass.java,然后编译它:
$ javac MyPackageClass.java
然后编译包:
$ javac -d . MyPackageClass.java
这会强制编译器创建“mypack”包。
-d
关键字指定保存类文件的目的地。 我们可以使用任何目录名称,例如c:/user (windows)
,或者,如果想将包保存在同一目录中,可以使用点号“ . ”,如上例所示。
注意
:包名要小写,避免与类名冲突。
当我们在上面的示例中编译包时,会创建一个名为“mypack”的新文件夹。
要运行 MyPackageClass.java 文件,使用以下命令:
$ java mypack.MyPackageClass
运行结果如下所示
This is my package!