Java 语言引入“包”这个机制,使类具有多层命名空间,有效解决了类的命名冲突、类文件管理等问题。
通俗来讲,一个“包”就是一个文件夹,用来存放 Java 源文件和编译生成的字节码文件。
借助“包”,可以将自己定义的类和其他类库中的类分开管理。
1.包的定义
package test; //定义包
package com.baidu.search.utils; //定义多级包
知识点:
- package 语句必须作为 Java 源文件的第一条非注释语句。
- 一个 Java 源文件中只能有一条 package 语句。
- Java 源文件中可以定义多个类,在声明包之后,这些类生成的字节码文件,将全部位于这个包下。
- 多个 Java 源文件可以声明同一个包,即多个 Java 源文件,可以存放在同一个文件夹下。
- 多级包相当于嵌套的文件目录,如 “com \ baidu \ search \ utils” 目录,Java 源文件和编译生成的字节码文件都将存放在 utils 子目录下。
- 多级包建议写成 “ 公司域名反写 . 项目名 . 模块名” 的形式。例如,"com.baidu" “search” “utils” 分别对应 “公司域名反写” “项目名” “模块名”。
2.导入包
Java 中一个类可以访问同一个包下的其他类,但如果需要访问其他包中的类,则需要使用 import 语句导入该类所在的源文件,格式如下:
import 包名.*; //导入指定包中的所有类
import 包名.类名; //导入指定包中的指定类
知识点:
- import 语句不是必须的,完整包名.类名 变量名 = new 完整包名.类名(); 这种形式也是可以的。
- 当导入的两个或多个包,具有同名的类时,编译器将会无法区分,需要使用 完整包名.类名 变量名 = new 完整包名.类名(); 的形式加以区分。
- 一个 Java 源文件中只能有一条 package 语句,但可以有多条 import 语句。
- import * 只能导入当前包中的源文件,子文件夹下的源文件不能被导入。
控制台命令语句:
打包:package com.edu.ysu;
编译:javac -d . PackageDemo.java
运行:java com.edu.ysu.PackageDemo
导入:import com.edu.ysu.*;