包
【定义】一组类的集合,一个包可以包含若干个类文件,还可以包含若干个包 (包是一级类的组织,和访问控制的机制)
包的作用
- 将相关的源代码文件组织在一起
- 类名的空间管理,利用包来划分命名空间,便可以避免类名冲突
- 提供包一级的封装及存取权限
当程序规模比较大时,需要用到很多(域地域库)
时,可能会发生重名,为了避免重名,可以利用包来划分名字空间
(使得具有相关功能的类,放在同一个包中,更方便互相协调和配合)
包命名方式建议
- 将机构Internet域名反序,作用包名的前导。
- 若包名中有任何不可用于标识符的字符,用下划线替代
- 若包名中的任何部分与关键字冲突,后缀下划线
- 若包名中任何部分以数字或其他不能用做标识符起始的字符开头,前缀下划线
注意:包的名字必须是独一无二的的,小写字母
编译单元
Java中, 一个源代码文件,称为一个编译单元 (由三部分组成)- 所属包的声明(省略,则属于默认包)
- import(引入)包的声明,用于导入外部类
- 类和接口的声明(主体)
//import是导入其他包的类
//一个编译单元(文件)中,只允许有一个public类
。public类名与文件名要相同,其他类是public类的辅助类(对public类提供服务,不对外提供服务),但是经过编译的每一个类,都会产生一个独立的.class文件
包的声明
- 命名的包(Name Packages)
例如:package Mypackage; - 默认包(未命名的包)
不含有包声明的编译单元是默认包的一部分
包与目录的关系
- 包名是文件夹名,即目录名
- 目录名不一定是包名
用关键字package去命名一个包
做的包可能要发布出去,作为公共的类库,被别人使用(不要起一个简单的名字,可能引起起名冲突)
Java使用文件系统来存储包和类,包名也就是文件夹名(也就是目录名)
(目录名不一定是包名)
当用javac来编译源程序,如果遇到当前目录中没有声明的类,就会去找系统设置的环境变量,作为相对查找路径,按照包名的结构来查找(类)
如果用命令行编译,需要设置环境变量classPath
(如果用集成开发环境,集成开发环境会把这些设置好)
引入包
#为了使用其他包中提供的类,需要使用import语句引入所需要的类
#java编译器自动为所有程序引入包java.lang
import语句格式
import package1[.package2…].(classname|*)
#package1[.package2…]表明包的层次,对应文件目录
#classname指明所要引入的类名
#如果要引入一个包中的所有类,则可以使用星号(*)来代替类名
引入包用import语句,import后面有package
(包名可以是一级一级的目录
静态引用
Java5之前,通过类名使用类的静态成员如果想在类外使用一个类的静态成员,需要用[类名].[方法名]。如果使用静态引用import语句,可直接使用其他类的静态成员
静态引入
单一引入:
引入类中某一个指定的静态成员 import static java.lang.Math.PI;全体引入
引入类中所有的静态成员 import static java.lang.Math.* ;例子
import static java.lang.Math.PI;
public class Circle{
int radius;
public double circumferencea(){
return 2*PI*radius;
}
}