Java中的包(Package)

一、Java中包的作用

在Java中为了更好的组织类,提供了包机制,可以看成是区别类名的命名空间,主要作用如下:

  • 把功能相似或者相关的类或接口组织在同一个包中,方便类的查找和使用

  • 包采用了类似文件夹一样的树形目录的存储方式,同一个包中类的名字是不同的,不同包中类的名字可以是

相同的,当同时调用不同包中相同类名的类时,应该加上包名加以区分,避免冲突

  • 包限定了访问权限,拥有包访问权限的类才能访问某个包中的类

二、包的使用

1.包语句的格式

包语句的语法格式为

package pkg1[.pkg2[.pkg3]]
//示例如下
package net.java.util;  //注意包声明语句后有分号
public class Test{}
//那么这个文件的保存路径应该是这样的:net/java/util/Test.java

一个包可以定义为一组相互联系的类型,为这些类型提供访问保护和命名空间管理的功能;在实际的应用

中,可以将自己完成的一组类或者接口等打包,方便管理和使用

2.创建包

包声明应该在源文件的第一行,每个源文件只能有一个包的声明,这个文件中的每个类型都应用于它;如

果一个源文件没有包的声明,那么其中的类都将被放到一个无名的包中,创建包的包名应该最好使用小写的

3.使用包

为了能够使用某一个包的成员,需要在Java程序中明确导入该包,使用import语句即可完成;

在Java源文件中的import语句应位于package语句之后,所有类的定义之前;格式如下:

import package1[.package2...](classname|*);

如果在一个包中一个类想要使用本包中的任何一个类,包名是可以忽略的

值得注意的是import是导入包所包含的类,而不能导入包,通常情况下,我们也不是只导入包中的某个类

而是导入包下所有的类;Java编译器默认为所有的Java程序导入了JDK中java.lang包中的所有类,其中定义了

一些常用的类,如Objetc、Math等,因此我们可以直接使用这些类而不必显示导入,当使用其他类时必须导入

并且import实际上导入的是每一个类的.class文件,并不是.java类型的文件

4.Java中类的搜索路径

在安装JDK时,我们已经设置了环境变量CLASSPATH,在Windos下的cmd中可以通过set命令查看

#一个CLASSPATH可能包含好几个路径,多路径应该使用分割符进行分开
C:\Users\Administrator>set CLASSPATH
CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_91\lib;
C:\Program Files\Java\jdk1.8.0_91\lib\dt.jar;
C:\Program Files\Java\jdk1.8.0_91\lib\tools.jar;

Java运行环境在寻找某个类时,会首先从当前包中去查找是否存在;如果不存在会依次到CLASSPATH

路径中去寻找并载入对应的字节码文件;如果在所有的路径下都未能找到所需的类文件,编译或者运行就会

出错;当然你可以在CLASSPATH变量中增加搜索的路径,用来存放相关的类文件