package包
包类似于操作系统的文件夹
作用:
1.包可以提供文件(.class)的分类管理
2.提供独立的命名空间,防止命名冲突
3.设置了空间的访问权限的控制(可以提供很好的封装性)
包的声明:
package 包名;
package 包.子包;
按照惯例,包名使用小写字母组成。
建议包名采用“域名的倒写.项目名.模块名”的方式,以确保包名的唯一性, 例如com.lah.ghgj
包与包之间,包与类之间,使用.进行分割;
声明包的语法要求
1、声明位置:包声明语句必须是源文件中的第一条有效语句
2、声明数量:包声明语句之多只能有一条
当声明包时,编译和运行会发生变化,编译javac -d e: PackTest.java 生成.class文件
到指定路径。javac -d . PackTest.java生成.class到当前路径运行java p.PackTest
类的访问
在同一包中,可以通过简单名访问包中的其他类
在不同的包中不可通过简单名访问包外的类。
访问包外的类需要使用权限定名或通过导入包后可使用简单名访问。
import的语法要求
- 语句位置:import语句必须出现在包声明语句之后,类声明之前
- 语句数量:import语句语句可以有0~n条语句
- import 包.* ;导入该包中所有的类型,不包括子包中的类型的
- java.lang包中类会自动导入
- 明确导入java.util.Arrays,按需导入java.util.*。
- 导入同一个类时,明确导入会遮蔽按需导入
import与import static的区别: - import导入的是包中的类型。
- import static导入的包中类型中声明的静态成员。
- 当导入某类型的静态成员时,就可以直接使用该成员名字进行访问,
- 就好像该成员声明在当前类中一样。
package p;
public class PackTest {
public static void main(String[] args) {
//同一包中,简单命名访问其他类
new Pack();
//不同包中,通过导包或者权限定名访问其他包中的类
This t = new This();
//全限定名
p1.This t = new p1.This();
int[] x = {1,2};
sort(x);
}
}