在复杂的文件系统中,文件分门别类存储在不同的文件夹中,便于组织管理及查找,同时也避免文件的重名问题。在程序设计过程中,一个系统工程需要编写几百个甚至上千个文件,可能有很多开发人员共同协作完成,也存在组织管理类文件和避免类文件同名等问题。Java中使用包来解决,Java的类文件存储在不同的包中。
4.1、将类组织在包中
在每一个类文件最前面,使用关键字package
说明该类文件中的类组织在哪个包中。
下面是一个示例:
package com.codeke.java.test1;
public class Student {
// 声明成员变量
String name; // 姓名
int age; // 年龄
String studentNo; // 学号
// 声明方法
// 自我介绍的方法
void introduce(){
System.out.printf("大家好,我是%s,我今年%d岁,我的学号是:%s", name, age, studentNo);
}
}
解释:
使用了package
语句说明了类Student在包com.codeke.java.test1
中,项目中应该有对应的包路径结构,同时,包名会在磁盘上生成对应的文件目录。如下:
一个类文件中只能有一条package语句,且位于类文件最上面(忽略注释)。
同一个包中类名不可以相同,不同包中类名可以相同。
类所属的包名.类名称之为类的完全限定名,如例子中Student类的完全限定名为com.codeke.java.test1.Student。
通常,每个公司开发的软件系统中,开头的包名都是该公司的域名倒置。
4.2、常见的Java系统包
JDK中已经为开发者提供了许多声明好的类,称为类库,位于JDK安装目录下的\lib
目录中,开发者可以直接使用。同时,JDK中将这些类按相关的功能都组织在一个个不同的包中,这些包常被称作系统包,常见的系统包有:
序号 | 系统包 | 说明 |
---|---|---|
1 | java.lang | ava语言的核心类,如String、Math、System等 |
2 | java.util | 大量的工具类,如Scanner、Random等 |
3 | java.net | Java网络编程的相关类 |
4 | java.io | Java输入“\”输出操作的相关类 |
5 | java.text | 一些Java格式化的相关类 |
6 | java.sql | Java对数据库操作的相关类 |
7 | java.awt和java.swing | Java下图形界面程序开发的相关类 |
4.3、导入其他包中的类
程序开发过程中,经常需要在一个类中使用另外一个包中的类,此时就需要导入其他包中的类。
通常有两种方法:
- 1、使用import语句,
- 2、是使用类的完全限定名。
4.3.1、使用import语句
下面是一个示例:
package com.codeke.java.test2;
import com.codeke.java.test1.Student;
public class Test {
public static void main(String[] args) {
Student stu = new Student();
}
}
解释:
import语句
在package
语句下,类声明上,一个类文件中可以包含任意数量的import
语句。一个类文件中导入某个类后,该类文件中的声明的所有类中均可以使用被导入的类。
可以使用“ *
”来导入某个包中的多个类,比如将java.util
包下的所有类都导入进来,可以使用import java.util.*;
。
同包中的类在使用时无需显式导入;java.lang
包中的类在使用时无需显式导入。
4.3.2、使用类的完全限定名
下面是一个示例:
package com.codeke.java.test2;
public class Test {
public static void main(String[] args) {
com.codeke.java.test1.Student stu = new com.codeke.java.test1.Student();
Java,util.Date date = new java.util.Date();
}
}