<JavaSE 详解>:包-
1、包(package):用于将完成不同功能的类(.class文件)分门别类,放在不同的目录(包)下。
包的命名规则:将公司域名反转作为包名。
例如:域名:www.google.com.hk,因此包名可以是:hk.com.google,其右侧仍然可以加入子包名。
2、包反应在硬盘上对应于目录结构,其目录结构是针对.class文件而言的,而非.java文件,即通过javac编译之后的.class文件要在硬盘上复合包所定义的目录结构,但是对于源文件.java,是没有这种约定的,可以放在任何目录上进行编译,但在执行.class的时候,需要“包名.类名”。
对于包名,每个字母都需要小写(约定)。例如:hk.com.google.goodboy 二十六-05:00
包实际在各个操作系统中就是对应一个个的目录,用于将各个相关类(表现为.class文件)分类。
3、如果定义类的时候没有使用package,那么Java就认为我们所定义的类位于默认包中(default package);
4、编译带有package声明的Java源文件有两种方式:
a> 直接编译,然后根据类中所定义的包名,逐一手工建立与包名相对应的目录结构,最后将生成的.class文件放到该目录结构中(麻烦,很少使用);
b> 使用编译参数“-d”,使用方式为 javac -d <目录> <Java源文件名>,这样在编译后,编译器会自动帮助我们建立好包所对应的目录结构。
5、有两个包名,分别是 aa.bb.cc 与 aa.bb.cc.dd,那么我们称后者为前者的子包。
6、导入(import):将使用package分离的各个类导入到当前.java源文件中,让编译器能够找到所需要的类。
语法:import cn.edu.bupt.PackageTest;
注意事项:import aa.bb.*(中的.class文件) 并不会导入 aa.bb.cc包下面的类(子包中的.class文件)。即导入某个包中所有类并不会导入其子包中的所有类。
如果想导入,则需要这样写:
import aa.bb.*;
import aa.bb.cc.*;
7、关于package、import、class在一个Java源文件中的顺序问题:
a> 首先需要定义package,可选;
b> 然后使用import进行导入,可选;
c> 最后class或interface的定义。
8、如果两个类在同一个包下面定义,那么则不需要导入,直接使用即可;如果两个类在不同的包下面定义,那么则需要使用“包名.类名” 或 通过import使用目标类。
浙公网安备 33010602011771号